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

Forumthread: Pivot Berichtsfilter mehrere Elemente auswählen

Pivot Berichtsfilter mehrere Elemente auswählen
11.07.2014 16:58:01
Ben
Hallo zusammen,
folgendes Problem stellt sich mir gerade.
Ich habe eine Pivottabelle und möchte dort mehrere Filter über vba setzen lassen.
Wenn ich jetzt ein Makro aufnehme kommt dabei folgendes raus.

ActiveSheet.PivotTables("PivotTable1").PivotFields("Function").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Function")
.PivotItems("0").Visible = False
.PivotItems("(blank)").Visible = False
.PivotItems("Line Number").Visible = False
.PivotItems("Wert 1").Visible = False
.PivotItems("Wert 2").Visible = False
.PivotItems("Wert 3").Visible = False
.PivotItems("Wert 4").Visible = False
.PivotItems("Wert 5").Visible = False
.PivotItems("Wert 7").Visible = False
.PivotItems("Wert 8").Visible = False
.PivotItems("Wert 9").Visible = False
.PivotItems("Wert 11").Visible = False
.PivotItems("Wert 12").Visible = False
.PivotItems("Wert 13").Visible = False
.PivotItems("Wert 14").Visible = False
.PivotItems("Wert 15").Visible = False
.PivotItems("Wert 16").Visible = False
.PivotItems("Wert 17").Visible = False
.PivotItems("Wert 18").Visible = False
.PivotItems("Wert 19").Visible = False
.PivotItems("Wert 20").Visible = False
.PivotItems("Wert 21").Visible = False
.PivotItems("Wert 22").Visible = False
.PivotItems("Wert 23").Visible = False
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("Function").EnableMultiplePageItems =  _
True
Wert 6 und Wert 10 sind dann die Werte, welche ich ausgewählt haben möchte. Deswegen sind sie oben nicht mit dabei.
Soweit funktioniert das ja, aber das Problem dabei ist, dass nicht immer 23 Werte in der Tabelle sind. Also es sind von Stunde zu Stunde mal mehr mal weniger.
Gibt es eine Möglichkeit, das Makro so zu schreiben, dass alle Werte, die in der Auswahl vorkommen, deaktiviert werden und ich dann meine Werte festlegen kann?
Ich hoffe ich versteht was ich meine :)
Liebe Grüße
Ben

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot Berichtsfilter mehrere Elemente auswählen
13.07.2014 09:58:42
fcs
Hallo Ben,
das Ausblenden aller Elemente funktioniert nicht, da immer mindestens ein Pivot-Item sichtbar bleiben muss.
man kann nur alle Elemente einblenden und dann die "unerwünschten" ausblenden.
Gruß
Franz
'Makro erstellt unter Excel 2010
Sub BerichtsFeldPivot()
Dim pvTab As PivotTable, pvField As PivotField, pvItem As PivotItem
Dim arrItems As Variant, intItem As Integer
Dim bolVisible As Boolean
Set pvTab = ActiveSheet.PivotTables("PivotTable1")
Set pvField = pvTab.PivotFields("Function")
arrItems = Array("Wert 6", "Wert 10") 'zu filternde Werte des Feldes
With Application
.ScreenUpdating = False
End With
With pvField
.ClearManualFilter
'        .CurrentPage = "(All)" 'funktioniert nur in der englischen Version
.EnableMultiplePageItems = True
For Each pvItem In .PivotItems
bolVisible = False
For intItem = LBound(arrItems) To UBound(arrItems)
If pvItem.Name = arrItems(intItem) Then
bolVisible = True
Exit For
End If
Next
If bolVisible = False Then
pvItem.Visible = False
End If
Next pvItem
End With
With Application
.ScreenUpdating = True
End With
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivot Berichtsfilter: Mehrere Elemente auswählen in Excel


Schritt-für-Schritt-Anleitung

Um in einer Excel-Pivottabelle mehrere Filter auf ein Feld anzuwenden, kannst Du VBA (Visual Basic for Applications) nutzen. Hier ist eine Schritt-für-Schritt-Anleitung, um dies zu erreichen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub BerichtsFeldPivot()
       Dim pvTab As PivotTable, pvField As PivotField, pvItem As PivotItem
       Dim arrItems As Variant, intItem As Integer
       Dim bolVisible As Boolean
    
       Set pvTab = ActiveSheet.PivotTables("PivotTable1")
       Set pvField = pvTab.PivotFields("Function")
       arrItems = Array("Wert 6", "Wert 10") 'zu filternde Werte des Feldes
    
       With Application
           .ScreenUpdating = False
       End With
    
       With pvField
           .ClearManualFilter
           .EnableMultiplePageItems = True
           For Each pvItem In .PivotItems
               bolVisible = False
               For intItem = LBound(arrItems) To UBound(arrItems)
                   If pvItem.Name = arrItems(intItem) Then
                       bolVisible = True
                       Exit For
                   End If
               Next
               If bolVisible = False Then
                   pvItem.Visible = False
               End If
           Next pvItem
       End With
    
       With Application
           .ScreenUpdating = True
       End With
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle „BerichtsFeldPivot“ und klicke auf „Ausführen“.

Nun werden nur die Werte „Wert 6“ und „Wert 10“ angezeigt, während alle anderen ausgeblendet werden.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Stelle sicher, dass die Pivottabelle tatsächlich „PivotTable1“ heißt. Ansonsten passe den Namen im Code an.

  • Fehler: Alle Elemente müssen sichtbar sein
    Du musst immer mindestens ein Pivot-Item sichtbar lassen. Achte darauf, dass Du nicht versuchst, alle Elemente auszublenden.


Alternative Methoden

Eine alternative Methode, um mehrere Werte in einem Pivottabellenfilter auszuwählen, ist die Verwendung von „Filter“ in der PivotTable-Option in Excel selbst. Du kannst auch die „Slicers“-Funktion verwenden, um eine benutzerfreundliche Auswahl von Werten zu ermöglichen.


Praktische Beispiele

Angenommen, Du hast eine Pivottabelle mit verschiedenen Produkten. Wenn Du die Produkte „Produkt A“ und „Produkt B“ filtern möchtest, kannst Du die oben genannten Schritte ausführen und „Produkt A“ sowie „Produkt B“ in das Array einfügen:

arrItems = Array("Produkt A", "Produkt B")

So kannst Du die Sichtbarkeit in Deiner Pivot-Tabelle anpassen, um nur die gewünschten Produkte anzuzeigen.


Tipps für Profis

  • Verwende dynamische Arrays: Anstatt die Werte manuell in das Array einzufügen, kannst Du eine dynamische Liste aus einer bestimmten Zelle oder einem Bereich beziehen.
  • Teste den Code: Verändere die Werte im Array, um zu überprüfen, wie der Filter funktioniert, bevor Du endgültige Änderungen vornimmst.
  • Makros speichern: Vergiss nicht, Deine Excel-Datei im „xlsm“-Format zu speichern, um die Makros zu behalten.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Filter in einer Pivottabelle gleichzeitig anwenden?
Du kannst die EnableMultiplePageItems-Eigenschaft auf True setzen und dann die Sichtbarkeit der einzelnen Pivot-Items steuern.

2. Funktioniert dieser VBA-Code in jeder Excel-Version?
Der bereitgestellte Code wurde unter Excel 2010 erstellt, sollte aber auch in neueren Versionen funktionieren. Stelle sicher, dass Du die richtige Pivottabellenstruktur verwendest.

3. Kann ich den Code anpassen, um andere Werte auszublenden?
Ja, ändere einfach die Werte im arrItems-Array, um die gewünschten Elemente zu filtern.

4. Was sind die Vorteile der Verwendung von VBA für Pivottabellen?
Mit VBA kannst Du automatisierte und komplexe Filtereinstellungen vornehmen, die mit den Standard-Excel-Funktionen nicht möglich wären.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige