So filtern sie pivottables mit vba (mit beispielen)
Sie können die folgenden Methoden verwenden, um Pivot-Tabellen in Excel mithilfe von VBA zu filtern:
Methode 1: Filtern Sie die Pivot-Tabelle basierend auf einem Wert
SubFilterPivotTable ()
Dim pf As PivotField
Dim myFilter As String
Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub
Dieses spezielle Makro filtert die Pivot-Tabelle namens PivotTable1 , um nur die Zeilen anzuzeigen, in denen der Wert in der Spalte „ Position“ der Pivot-Tabelle dem Wert in Zelle J2 von Sheet1 entspricht.
Methode 2: Filtern Sie die PivotTable basierend auf mehreren Werten
Sub FilterPivotTableMultiple()
Dim v Ace Variant
Dim i As Integer, j As Integer
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
'specify range with values to filter on
v = Range(" J2:J3 ")
'clear existing filters
pf.ClearAllFilters
'apply filter to pivot table
With pf
For i = 1 TB pf.PivotItems.Count
j = 1
Do While j <= UBound(v, 1) - LBound(v, 1) + 1
If pf.PivotItems(i).Name = v(j, 1) Then
pf.PivotItems(pf.PivotItems(i).Name).Visible = True
Exit Do
Else
pf.PivotItems(pf.PivotItems(i).Name).Visible = False
End If
j = j + 1
Loop
Next i
End With
End Sub
Dieses spezielle Makro filtert die Pivot-Tabelle namens PivotTable1 , um nur die Zeilen anzuzeigen, in denen der Wert in der Positionsspalte der Pivot-Tabelle einem der Werte im Zellbereich J2:J3 entspricht.
Methode 3: PivotTable-Filter entfernen
SubClearPivotTableFilter ()
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables(" PivotTable1 ")
pt.ClearAllFilters
End Sub
Dieses spezielle Makro löscht alle Filter aus der Pivot-Tabelle namens PivotTable1 .
Die folgenden Beispiele zeigen, wie jede dieser Methoden in der Praxis angewendet werden kann.
Beispiel 1: Filtern Sie die Pivot-Tabelle basierend auf einem Wert
Nehmen wir an, wir haben aus einem Datensatz in Excel eine Pivot-Tabelle erstellt, um die von Basketballspielern verschiedener Teams und Positionen erzielten Punkte zusammenzufassen:
Nehmen wir an, wir möchten die Pivot-Tabelle so filtern, dass nur Zeilen angezeigt werden, deren Wert in der Spalte „Position“ „Guard“ ist.
Dazu können wir das folgende Makro erstellen:
SubFilterPivotTable ()
Dim pf As PivotField
Dim myFilter As String
Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub
Wenn wir dieses Makro ausführen, wird die Pivot-Tabelle automatisch gefiltert, um nur Zeilen anzuzeigen, deren Wert in der Spalte „Position“ Guard ist:
Die Pivot-Tabelle wurde gefiltert, um nur Zeilen anzuzeigen, deren Wert in der Spalte „Position“ „Guard“ ist.
Beispiel 2: Filtern Sie eine Pivot-Tabelle basierend auf mehreren Werten
Angenommen, wir möchten stattdessen die Pivot-Tabelle filtern, um nur Zeilen anzuzeigen, deren Wert in der Spalte „Position“ „Guard “ oder „Center“ ist.
Dazu können wir das folgende Makro erstellen:
Sub FilterPivotTableMultiple()
Dim v Ace Variant
Dim i As Integer, j As Integer
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
'specify range with values to filter on
v = Range(" J2:J3 ")
'clear existing filters
pf.ClearAllFilters
'apply filter to pivot table
With pf
For i = 1 TB pf.PivotItems.Count
j = 1
Do While j <= UBound(v, 1) - LBound(v, 1) + 1
If pf.PivotItems(i).Name = v(j, 1) Then
pf.PivotItems(pf.PivotItems(i).Name).Visible = True
Exit Do
Else
pf.PivotItems(pf.PivotItems(i).Name).Visible = False
End If
j = j + 1
Loop
Next i
End With
End Sub
Wenn wir dieses Makro ausführen, wird die Pivot-Tabelle automatisch gefiltert, um nur Zeilen anzuzeigen, deren Wert in der Spalte „Position“ „Guard“ oder „Center“ ist:
Die Pivot-Tabelle wurde gefiltert, um nur Zeilen anzuzeigen, deren Wert in der Spalte „Position“ „Guard“ oder „Center“ ist.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in VBA ausführen:
VBA: So aktualisieren Sie Pivot-Tabellen
VBA: So entfernen Sie doppelte Werte
VBA: So zählen Sie die Anzahl der Zeilen im Bereich