PDA

Vollständige Version anzeigen : PivotField Eigenschaft auslesen


ExcelFragezeichen
19.07.2014, 06:22
Hallo zusammen,

meine Exceldatei hat viele Pivottabellen die nach Arbeitswochen gefiltert werden.
Die Arbeitswochen können sich entweder im xlPageField, xlRowField oder im xlColumnField befinden.

Mein Ziel ist es in allen Pivottabellen die Arbeitswochen durch Monat 1:1 zu ersetzen, oder andersherum. So hätte ich eine Möglichkeit variable und schnell Daten zu gruppieren.

Leider schaffe ich es nicht die PivotField Eigenschaften auszulesen, um sie dann später an die neue Auswahl zu übergeben.

Kann mir einer eine Idee geben wie man die Eigenschaft eines PivotFields bekommen kann?
In dem unteren Beispiel möchte ich wissen welche Orientation und Position Eigenschaft hat das Feld Kunde.

With ptTable.PivotFields(„Kunde“)
.Orientation = xlPageField
.Position = 1
End With

Oder ist es möglich direkt PivotFields auszutauschen, z.B. Arbeitswochen mit Monat?

Schöne Grüße
ExcelFragezeichen

Ishaell
22.07.2014, 06:46
Servus ExcelFragezeichen,

dadurch das sich deine Arbeitswochen jedesmal in einem anderen Teil der Pivot befinden machst du es dir nicht gerade einfach.
Du kannst aber mithilfe der ?Funktion? PivotItems die Felder abfragen und auch ausgeben. Ich gehe mittlerweile mit Schleifen vor um mit einer If-Else Abfrage alle Einträge abzuarbeiten.
Wenn du statt zu überprüfen direkt einen Wert in das Feld setzt kann es vorkommen das du dir dabei die komplette Pivot zerlegst. Ist mir leider häufig genug passiert.

Mehr fällt mir spontan nicht ein da ich mir das ganze gerade recht schlecht vorstellen kann.

Hier aber ein Beispiel um z.B. den Bereichsfilter anzusprechen.

Sub test()

Application.ScreenUpdating = False

Dim x As Variant
Dim pivot_Item As PivotItem
Dim PivotField As PivotField
Dim intT As Integer

x = "21" ' Deine Variable bei mehreren Durchläufen kannst du diese Variable natürlich per Schleife neu beschreiben. So mache ich das zumindest.


ActiveSheet.PivotTables(1).PivotCache.Refresh


With ActiveSheet.PivotTables(1).PageFields("Kalenderwochen")
.EnableMultiplePageItems = True

Set PivotField = ActiveSheet.PivotTables(1).PageFields("Kalenderwochen")

For Each pivot_Item In PivotField.PivotItems
pivot_Item.Visible = True
Next

For intT = 1 To .PivotItems.Count
If .PivotItems(intT) = x Then
.PivotItems(intT).Visible = True
Else
.PivotItems(intT).Visible = False

End If
Next
End With
Application.ScreenUpdating = True
End Sub