PivotItems mit VBA auswählen und filtern
Schritt-für-Schritt-Anleitung
Um PivotItems in einer Pivot-Tabelle mithilfe von VBA auszuwählen und zu filtern, kannst du folgende Schritte befolgen:
-
Öffne den VBA-Editor:
- Drücke
ALT + F11
in Excel, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".
-
Kopiere den folgenden Code in das Modul:
Sub PivotFilter()
Dim varCustomercodes As Variant
Dim pvTab As PivotTable
Dim pvField As PivotField
Dim pvItem As PivotItem
varCustomercodes = Array("NNPSG1", "NNPSG5")
Set pvTab = Worksheets("Supplier").PivotTables("PivotTable222")
Set pvField = pvTab.PivotFields("Customer Modifier")
With pvField
.EnableMultiplePageItems = False
.ClearAllFilters
.EnableMultiplePageItems = True
For Each pvItem In .PivotItems
If IsError(Application.Match(pvItem.Name, varCustomercodes, 0)) Then
pvItem.Visible = False
End If
Next
End With
End Sub
-
Führe das Makro aus:
- Drücke
F5
oder wähle das Makro aus und klicke auf "Ausführen".
Dieser Code filtert die PivotItems basierend auf den Werten im Array varCustomercodes
.
Häufige Fehler und Lösungen
-
Fehler: "Typenkonflikt"
Lösung: Stelle sicher, dass die Namen der PivotItems im Array exakt mit den Namen in der Pivot-Tabelle übereinstimmen.
-
Fehler: "PivotItem sichtbar"
Lösung: Überprüfe die Verwendung von .Visible
in deinem Code. Du musst sicherstellen, dass die Filter richtig gesetzt sind.
-
Fehler: "Objekt nicht gefunden"
Lösung: Stelle sicher, dass die angegebene Pivot-Tabelle existiert und der Name korrekt ist.
Alternative Methoden
Eine alternative Methode ist die Verwendung von Berichtsfiltern. Hier ist ein Beispiel, wie du dies umsetzen kannst:
Sub PivotFilterPageField()
Dim varCustomercodes As Variant
Dim pvTab As PivotTable
Dim pvField As PivotField
Dim pvItem As PivotItem
varCustomercodes = Array("NNPSG1", "NNPSG5")
Set pvTab = Worksheets("Supplier").PivotTables("PivotTable222")
Set pvField = pvTab.PageFields("Customer Modifier")
Application.ScreenUpdating = False
With pvField
.ClearAllFilters
For Each pvItem In .PivotItems
If IsError(Application.Match(pvItem.Name, varCustomercodes, 0)) Then
pvItem.Visible = False
End If
Next
End With
Application.ScreenUpdating = True
End Sub
Diese Methode eignet sich gut, wenn du Berichtsfilter verwenden möchtest.
Praktische Beispiele
Hier sind einige praktische Beispiele, die zeigen, wie du mit PivotItems
in VBA arbeiten kannst:
-
Alle sichtbaren PivotItems ausblenden:
Sub HideAllVisibleItems()
Dim pvField As PivotField
Set pvField = Worksheets("Supplier").PivotTables("PivotTable222").PivotFields("Customer Modifier")
For Each pvItem In pvField.PivotItems
pvItem.Visible = False
Next
End Sub
-
Alle PivotItems wieder einblenden:
Sub ShowAllItems()
Dim pvField As PivotField
Set pvField = Worksheets("Supplier").PivotTables("PivotTable222").PivotFields("Customer Modifier")
For Each pvItem In pvField.PivotItems
pvItem.Visible = True
Next
End Sub
Tipps für Profis
-
Verwende Option Explicit
: Dies hilft dir, Typen für alle Variablen zu deklarieren und Fehler im Code frühzeitig zu erkennen.
-
Nutze die Application.ScreenUpdating
-Eigenschaft: Dies verbessert die Leistung, insbesondere wenn du viele Änderungen vornimmst.
-
Arbeite mit benannten Bereichen: Dies erleichtert das Verwalten der Datenquellen deiner Pivot-Tabellen.
FAQ: Häufige Fragen
1. Wie kann ich mehrere PivotItems gleichzeitig filtern?
Durch die Verwendung eines Arrays und der Application.Match
-Funktion kannst du mehrere PivotItems effizient filtern.
2. Was ist der Unterschied zwischen Zeilen-/Spaltenbeschriftungen und Berichtsfiltern?
Berichtsfilter sind auf der obersten Ebene der Pivot-Tabelle und beeinflussen die gesamte Tabelle, während Zeilen-/Spaltenbeschriftungen spezifische Daten in den Zeilen oder Spalten filtern.
3. Wie kann ich alle Filter in einer Pivot-Tabelle zurücksetzen?
Du kannst die ClearAllFilters
-Methode verwenden, um alle Filter der Pivot-Tabelle zurückzusetzen.