VBA Code zum gleichzeitigen Filtern mehrerer Pivot-Tabellen
Schritt-für-Schritt-Anleitung
Um mehrere Pivot-Tabellen in Excel gleichzeitig zu filtern, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:
-
Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
-
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf dein Projekt im linken Bereich und wähle Einfügen > Modul.
-
Kopiere den folgenden Code in das Modul:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("B35:B35")) Is Nothing Then Exit Sub
Dim pt As PivotTable
Dim Field As PivotField
Dim NewCat As String
Set pt = Worksheets("Tabelle1").PivotTables("PivotTable6")
Set Field = pt.PivotFields("Name")
NewCat = Worksheets("Tabelle1").Range("B35").Value
pt.RefreshTable
Select Case NewCat
Case "(Alle)", "(All)"
Field.ClearAllFilters
Case Else
Field.CurrentPage = NewCat
End Select
End Sub
-
Schließe den VBA-Editor und gehe zurück zu deiner Excel-Datei.
-
Teste die Filterfunktion: Ändere den Wert in Zelle B35 und beobachte, wie die Pivot-Tabellen gefiltert werden.
Häufige Fehler und Lösungen
-
Fehler: "(Alle)" wird nicht erkannt
Lösung: Stelle sicher, dass du den Wert in Zelle B35 korrekt überprüfst. Der angepasste Code oben berücksichtigt sowohl "(Alle)" als auch "(All)".
-
Fehler: Filter wird nicht auf alle Pivot-Tabellen angewendet
Lösung: Du musst den Code für jede Pivot-Tabelle wiederholen, die du filtern möchtest. Ersetze PivotTable6 durch den Namen der anderen Pivot-Tabellen.
Alternative Methoden
Eine alternative Methode, um mehrere Pivot-Tabellen zu filtern, ist die Verwendung von Gruppenfiltern in Excel. Diese Methode ist weniger flexibel, erfordert jedoch keinen VBA-Code:
- Erstelle eine neue Zelle, in der du die Filterkriterien eingibst.
- Verwende die Datenvalidierung, um eine Dropdown-Liste zu erstellen.
- Verbinde die Dropdown-Auswahl mit den Berichtsfiltern der Pivot-Tabellen.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie du den vba filter pivot Code anpassen kannst, um mehrere Pivot-Tabellen gleichzeitig zu filtern:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("B35:B35")) Is Nothing Then Exit Sub
Dim pt1 As PivotTable, pt2 As PivotTable
Dim Field As PivotField
Dim NewCat As String
Set pt1 = Worksheets("Tabelle1").PivotTables("PivotTable6")
Set pt2 = Worksheets("Tabelle1").PivotTables("PivotTable7")
Set Field = pt1.PivotFields("Name")
NewCat = Worksheets("Tabelle1").Range("B35").Value
For Each pt In Array(pt1, pt2)
With pt
If NewCat = "(Alle)" Then
.PivotFields("Name").ClearAllFilters
Else
.PivotFields("Name").CurrentPage = NewCat
End If
End With
Next pt
End Sub
In diesem Beispiel wird ein vba pivot filter auf zwei Pivot-Tabellen angewendet.
Tipps für Profis
- Verwende Named Ranges: Anstatt Zellen wie
B35 direkt zu referenzieren, benutze benannte Bereiche. Das macht deinen Code flexibler und leichter zu verstehen.
- Debugging: Nutze
Debug.Print im VBA, um Variablenwerte während der Ausführung zu überprüfen.
- Performance: Reduziere die Anzahl der Refresh-Befehle, um die Performance zu verbessern, insbesondere bei großen Datenmengen.
FAQ: Häufige Fragen
1. Wie kann ich meinen VBA-Code anpassen, um mehrere Filter auf verschiedene Felder anzuwenden?
Du kannst mehrere Select Case-Anweisungen hinzufügen, um verschiedene Felder zu filtern. Achte darauf, dass die richtigen PivotField-Namen verwendet werden.
2. Funktioniert dieser Code in Excel 2016?
Ja, der Code sollte in Excel 2016 und späteren Versionen funktionieren, solange die Pivot-Tabellen korrekt benannt sind und sich im richtigen Arbeitsblatt befinden.