VBA für Pivotfilter: Alles außer 0, Leer und N.N. filtern
Schritt-für-Schritt-Anleitung
Um in einer Pivot-Tabelle alles außer 0, Leer und N.N. zu filtern, kannst Du den folgenden VBA-Code verwenden. Dieser Code durchläuft die Elemente einer PivotField und setzt die Sichtbarkeit entsprechend.
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
- Kopiere den folgenden Code in das Modul:
Sub Filter_setzen()
Dim pf As PivotField
Dim pi As PivotItem
Dim pt As PivotTable
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Pivot") 'Arbeitsblattname anpassen
Set pt = ws.PivotTables("PivotTable1") 'Pivot-Tabellenname anpassen
Set pf = pt.PivotFields("Unterkapitel") 'Feldname anpassen
For Each pi In pf.PivotItems
If pi.Name = "N.N" Or _
pi.Name = CStr(0) Or _
pi.Name = "(blank)" Then
pi.Visible = False
End If
Next pi
End Sub
- Passe den Namen des Arbeitsblatts und der Pivot-Tabelle entsprechend Deiner Datei an.
- Schließe den VBA-Editor und führe das Makro aus.
Häufige Fehler und Lösungen
-
Fehler: „Objekt nicht gefunden“
- Lösung: Überprüfe, ob der Name des Arbeitsblatts und der Pivot-Tabelle korrekt sind.
-
Fehler: „PivotField nicht gefunden“
- Lösung: Stelle sicher, dass der Name des PivotFields exakt mit dem in der Pivot-Tabelle übereinstimmt.
-
VBA gibt einen Laufzeitfehler aus
- Lösung: Überprüfe die Daten in der Pivot-Tabelle, um sicherzustellen, dass es keine unerwarteten Werte gibt.
Alternative Methoden
Eine Alternative zum VBA-Filter wäre die manuelle Filterung direkt in Excel:
- Klicke auf den Dropdown-Pfeil der Pivot-Tabelle.
- Wähle „Label-Filter“ und dann „Benutzerdefinierter Filter“.
- Setze die Filterbedingungen: Wähle „ist ungleich“ und füge die Werte 0 und N.N. hinzu.
Diese Methode ist jedoch weniger flexibel und erfordert manuelle Anpassungen.
Praktische Beispiele
Angenommen, Du hast eine Pivot-Tabelle mit Verkaufsdaten. Du möchtest alle Einträge, die 0 oder leer sind, ausblenden. Der oben angegebene VBA-Code filtert diese Einträge effektiv.
Wenn Du die Pivot-Tabelle nach einem bestimmten Kriterium filtern möchtest, kannst Du den If-Befehl im Code entsprechend anpassen.
Beispiel: Um nur Werte größer als 100 anzuzeigen, könnte die Bedingung so aussehen:
If CInt(pi.Value) <= 100 Then
pi.Visible = False
End If
Tipps für Profis
- Verwende die
Debug.Print-Anweisung, um die Namen der PivotItems während der Ausführung zu überwachen.
- Speichere regelmäßig Deine Arbeit, insbesondere nach umfangreichen Änderungen im VBA-Code.
- Experimentiere mit dem Recorder, um den VBA-Code für andere Filter zu generieren, und passe ihn an Deine Bedürfnisse an.
FAQ: Häufige Fragen
1. Wie filtere ich mehrere Werte gleichzeitig?
Du kannst mehrere Bedingungen im If-Statement kombinieren, um mehrere Werte auszuschließen.
2. Kann ich den Filter automatisch anwenden, wenn die Daten aktualisiert werden?
Ja, Du kannst das Makro in das Worksheet-Change-Ereignis einfügen, um die Filterung automatisch auszuführen, wenn die Daten aktualisiert werden.
3. Wie kann ich die Sichtbarkeit wiederherstellen?
Um alle Elemente wieder sichtbar zu machen, kannst Du eine Schleife erstellen, die pi.Visible = True für jedes PivotItem setzt.
4. Gibt es eine Möglichkeit, die Pivot-Tabelle nach dem Filtern automatisch einzuklappen?
Ja, Du kannst pt.PivotFields("Feldname").ShowDetail = False verwenden, um die Pivot-Tabelle nach dem Filtern einzuklappen.