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:

Pivot-Tabelle der VBA-Filter

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:

Pivot-Tabelle des VBA-Filters basierend auf mehreren Werten

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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert