Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Code mehrere Pivot gleich filtern

VBA Code mehrere Pivot gleich filtern
20.02.2018 10:21:09
Katrin
Guten Morgen,
ich habe einen Code um einen Berichtsfilter, den ich für eine Pivot auswähle auf eine zweite Pivot (PivotTable6) zu übertragen. Das Ausgabefeld des Berichtsfilters ist B35. Das funktioniert auch. Allerdings nur, wenn ich auf einen Namen filtere. Möchte ich wieder (Alle) filtern, funktioniert mein Code nicht.
Kann mir hier jemand weiterhelfen?
Hier noch der Code:
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
With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
End With
End Sub
Gruß
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code mehrere Pivot gleich filtern
22.02.2018 19:36:03
fcs
Hallo Katrin,
"(Alle)" ist kein gültiger Wert für ein cBerichtsfeld.
Hier musst du den Wert der Zelle B35 auf "(Alle)" prüfen und und ggf. den Filter für das Berichtsfeld zurücksetzen.
Gruß
Franz
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

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf dein Projekt im linken Bereich und wähle Einfügen > Modul.

  3. 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
  4. Schließe den VBA-Editor und gehe zurück zu deiner Excel-Datei.

  5. 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:

  1. Erstelle eine neue Zelle, in der du die Filterkriterien eingibst.
  2. Verwende die Datenvalidierung, um eine Dropdown-Liste zu erstellen.
  3. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige