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

Forumthread: VBA Pivot Filter Variable

VBA Pivot Filter Variable
03.05.2016 11:52:21
Hendrik
Moin zusammen,
ich suche verzweifelt nach einer VBA-Lösung zum Anpassen eines Filters einer Pivot Tabelle. Ich habe ein Tabellenblatt(Tabelle2) mit einer Pivottabelle (Kostenart / Betrag) und als Filter die Kostenstellen. In einem zweiten Tabellenblatt stehen in einer Spalte die Kostenstellennummern, welche je nach Kostenstellenverantwortlichen aber in der Nummer und Anzahl variieren können.
Folgenden Code konnte ich schon entwickeln, wobei zum einen dies nur für eine Kostenstelle funktioniert und ich auch nur auf dem selben Tabelleblatt auf die Zelle F1 und nicht auf das andere Tabelleblatt verweisen kann.
Sub Filter_setzten()
Worksheets("Tabelle2").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("Cost Cent").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("Cost Cent"). _
CurrentPage = [F1].Value
End Sub

Vielen Dank im Voraus
Hendrik

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Pivot Filter Variable
09.05.2016 21:30:28
fcs
Hallo Hendrik,
für mehrere Kostenstellen kann man es wie folgt lösen, wenn die Filterwerte auf einem anderen Tabellenblatt stehen.
Gruß
Franz
Sub Pivot_FilterCostCent()
Dim pvTab As PivotTable, pvField As PivotField, pvItem As PivotItem
Dim varItem, Zeile As Long
Dim bolVisible As Boolean
Set pvTab = Worksheets("Tabelle2").PivotTables(1)
Set pvField = pvTab.PageFields("Cost Cent")
pvTab.RefreshTable
pvField.ClearAllFilters
pvField.EnableMultiplePageItems = True
'Seitenfeld-Items abarbeiten
For Each pvItem In pvField.PivotItems
bolVisible = False
With Worksheets("Tabelle1")
'Einträge in Spalte F (6) mit Item-Name vergleichen
For Zeile = 1 To .Cells(.Rows.Count, 6).End(xlUp).Row
varItem = .Cells(Zeile, 6).Value
If pvItem.Name = varItem Then
bolVisible = True
Exit For
End If
Next
End With
If bolVisible = False Then
pvItem.Visible = False
End If
Next
pvTab.Parent.Activate
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Pivot Filter Variable Anpassen


Schritt-für-Schritt-Anleitung

Um einen VBA Pivot Filter zu setzen und anzupassen, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub Pivot_FilterCostCent()
       Dim pvTab As PivotTable, pvField As PivotField, pvItem As PivotItem
       Dim varItem, Zeile As Long
       Dim bolVisible As Boolean
    
       Set pvTab = Worksheets("Tabelle2").PivotTables(1)
       Set pvField = pvTab.PageFields("Cost Cent")
       pvTab.RefreshTable
       pvField.ClearAllFilters
       pvField.EnableMultiplePageItems = True
    
       ' Seitenfeld-Items abarbeiten
       For Each pvItem In pvField.PivotItems
           bolVisible = False
           With Worksheets("Tabelle1")
               ' Einträge in Spalte F (6) mit Item-Name vergleichen
               For Zeile = 1 To .Cells(.Rows.Count, 6).End(xlUp).Row
                   varItem = .Cells(Zeile, 6).Value
                   If pvItem.Name = varItem Then
                       bolVisible = True
                       Exit For
                   End If
               Next
           End With
           If bolVisible = False Then
               pvItem.Visible = False
           End If
       Next
       pvTab.Parent.Activate
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle Pivot_FilterCostCent und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "PivotTable nicht gefunden"
    Lösung: Überprüfe den Namen der PivotTable in deinem Arbeitsblatt und passe den Code entsprechend an.

  • Fehler: "Objekt nicht gefunden"
    Lösung: Stelle sicher, dass die angegebenen Tabellenblätter ("Tabelle1" und "Tabelle2") existieren und korrekt benannt sind.

  • Keine Filter sichtbar
    Lösung: Stelle sicher, dass du die Option EnableMultiplePageItems auf True gesetzt hast, um mehrere Filter gleichzeitig zu verwenden.


Alternative Methoden

Eine alternative Methode, um einen Pivot Filter zu setzen, ist die Verwendung von Formeln in Excel, um die Daten vor der Erstellung der Pivot-Tabelle zu filtern. Du kannst auch die Slicer-Funktion nutzen, um die Filterung visuell und interaktiv zu gestalten.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du eine Pivot-Tabelle filtern kannst, um nur bestimmte Kostenstellen anzuzeigen:

  1. Erstelle eine Pivot-Tabelle aus deinen Daten.
  2. Verwende den oben genannten VBA-Code, um die Sichtbarkeit der PivotItems basierend auf einer Liste in einem anderen Arbeitsblatt zu steuern.

Tipps für Profis

  • Verwende Variablen für die Filterwerte anstelle von fest kodierten Werten, um den Code flexibler zu gestalten.
  • Nutze Pivot-Wertefilter in Kombination mit deinem VBA-Code, um noch spezifischere Filtereinstellungen zu ermöglichen.
  • Experimentiere mit dem Pivot Chart VBA, um deine Daten visuell ansprechend darzustellen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Werte in einem Pivot Filter gleichzeitig setzen?
Du kannst die EnableMultiplePageItems Eigenschaft auf True setzen und dann alle gewünschten Filterwerte in einer Schleife durchlaufen.

2. Kann ich einen Pivot Filter auch ohne VBA setzen?
Ja, du kannst Filter direkt in der Pivot-Tabelle über die Benutzeroberfläche von Excel setzen, indem du auf den Dropdown-Pfeil des Filters klickst.

3. Welche Excel-Version benötige ich für das VBA-Scripting?
Die meisten modernen Excel-Versionen, wie Excel 2010 und neuer, unterstützen VBA-Scripting.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige