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

Forumthread: VBA Pivot filter visible = true ?

VBA Pivot filter visible = true ?
JensH.
Guten Morgen,
auch heute benötige ich mal wieder ein wenig Nachhilfe, nachdem ich mit meinen Kenntnissen nicht weiter komme.
Vorhanden ist eine Pivottabelle, in der per VBA ein Filter gesetzt werden soll. Leider bietet Exel da scheinbar nur die Möglichkeit gezielt auszublenden. Da die Werte aber variieren können und es eine recht lange Liste ist, war die Idee nur die (wenn vorhanden) 4 benötigten Werte EINZUBLENDEN und alle anderen eben nicht.
Nach Benutzung von Google und dem Suchen in diversen Foren, habe ich etwas von VisibleItemList gelesen, aber nicht kapiert wie das funktioniert. Die Microsoft Hilfe dazu ist auch nicht gerade aufschlussreich gewesen.
Mein Ziel ist hier:
ActiveSheet.PivotTables("PivotTable1").PivotFields("Arbeitspl."). ?
nur die Zeilen anzuzeigen, in denen bei "Arbeitspl." die Werte 103, 104, 106 und 107 vorhanden sind.
Hat dazu jemand eine Idee ?
Gruß
Jens

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Pivot filter visible = true ?
23.08.2012 14:41:04
fcs
Hallo Jens,
das funktioniert leider nur indem man alle Werte einblendet(Filter zurücksetzt) und alle unerwünschten Items ausblendet.
Gruß
Franz
Sub Pivot_Preset_Items()
Dim arrValues As Variant, iIndex As Long, bolVisible As Boolean
Dim pvTab As PivotTable
Dim pvField As PivotField, pvItem As PivotItem
Set pvTab = ActiveSheet.PivotTables(1)
Set pvField = pvTab.PivotFields("Arbeitspl.")
Application.ScreenUpdating = False
pvTab.RefreshTable
pvField.ClearAllFilters
arrValues = Array("103", "104", "107", "108")
For Each pvItem In pvField.VisibleItems
bolVisible = False
For iIndex = LBound(arrValues) To UBound(arrValues)
If pvItem.Name = arrValues(iIndex) Then bolVisible = True: Exit For
Next iIndex
If bolVisible = False Then pvItem.Visible = False
Next pvItem
Application.ScreenUpdating = True
End Sub

Anzeige
AW: VBA Pivot filter visible = true ?
23.08.2012 15:28:50
JensH.
Hallo Franz,
vielen Dank für die Antwort. Ich werde mich nach erfolgreicher Umsetzung noch einmal melden ;-)
Gruß
Jens
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Pivot-Filter setzen: Sichtbare Elemente einblenden


Schritt-für-Schritt-Anleitung

Um in einer Excel-Pivottabelle mit VBA nur bestimmte Werte sichtbar zu machen, kannst du den folgenden Code verwenden. Dieser setzt den Filter für die Pivottabelle und blendet alle unerwünschten Elemente aus.

  1. Öffne das Excel-Dokument mit deiner Pivottabelle.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul ein: Rechtsklick auf „VBAProject (DeinDokument)“ > Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:
Sub Pivot_Preset_Items()
    Dim arrValues As Variant, iIndex As Long, bolVisible As Boolean
    Dim pvTab As PivotTable
    Dim pvField As PivotField, pvItem As PivotItem
    Set pvTab = ActiveSheet.PivotTables(1)
    Set pvField = pvTab.PivotFields("Arbeitspl.")

    Application.ScreenUpdating = False
    pvTab.RefreshTable
    pvField.ClearAllFilters
    arrValues = Array("103", "104", "106", "107") ' Werte, die angezeigt werden sollen

    For Each pvItem In pvField.VisibleItems
        bolVisible = False
        For iIndex = LBound(arrValues) To UBound(arrValues)
            If pvItem.Name = arrValues(iIndex) Then bolVisible = True: Exit For
        Next iIndex
        If bolVisible = False Then pvItem.Visible = False
    Next pvItem

    Application.ScreenUpdating = True
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus: Gehe zu Entwicklertools > Makros > wähle Pivot_Preset_Items und klicke auf Ausführen.

Mit diesem Skript werden nur die gewünschten Werte in der Pivottabelle angezeigt, und der Rest wird ausgeblendet.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Stelle sicher, dass die Pivottabelle den Namen „PivotTable1“ trägt oder passe den Code entsprechend an.
  • Problem: Werte werden nicht korrekt gefiltert

    • Überprüfe, ob die Namen der Werte in der arrValues-Liste exakt mit denen in der Pivottabelle übereinstimmen.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch manuell die Filteroptionen in der Pivottabelle verwenden, um unerwünschte Werte auszublenden. Dies kann jedoch bei langen Listen mühsam sein.

  1. Klicke auf die Pivottabelle.
  2. Wähle den Dropdown-Pfeil des Feldes „Arbeitspl.“ aus.
  3. Deaktiviere die Checkboxen für die Werte, die du nicht sehen möchtest.

Praktische Beispiele

Angenommen, du hast eine Pivottabelle mit den Werten 101, 102, 103, 104, 105, 106 und 107. Du möchtest nur 103, 104, 106 und 107 anzeigen.

Verwende den oben genannten VBA-Code, um die Sichtbarkeit der Werte zu steuern. Dieses Verfahren ist besonders nützlich, wenn du regelmäßig mit verschiedenen Werten arbeitest und die Effizienz steigern möchtest.


Tipps für Profis

  • Nutze die Application.ScreenUpdating = False-Anweisung, um die Performance zu optimieren, insbesondere bei umfangreichen Pivottabellen.
  • Experimentiere mit anderen Filtereinstellungen in Excel VBA, um die Flexibilität deiner Pivottabellen zu erhöhen.
  • Halte deine VBA-Tools immer auf dem neuesten Stand, um die besten Ergebnisse mit den neuesten Excel-Versionen zu erzielen.

FAQ: Häufige Fragen

1. Kann ich mehrere Pivottabellen gleichzeitig filtern?
Ja, du kannst den Code anpassen, um mehrere Pivottabellen in einer Schleife zu durchlaufen und die Filter anzuwenden.

2. Was mache ich, wenn die Werte nicht sichtbar sind, obwohl ich sie im Code angegeben habe?
Überprüfe, ob die Werte in der Pivottabelle tatsächlich vorhanden sind und ob die Schreibweise übereinstimmt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige