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

Forumthread: Excel - Pivot-Filter per Makro setzen

Excel - Pivot-Filter per Makro setzen
07.06.2016 09:34:56
Valentin
Moin ihr Lieben,
Ich möchte per Makro eine Pivot-Tabelle filtern. Per Recorder schreibt er mir, welche nicht gefiltert werden sollen (also false). Ich benötige aber den umgekehrten Weg, da sich die Pivot und seine Filter z.T. ändern.
Kann mir da jemand weiterhelfen? Ich freue mich über jede Hilfe.
Liebe Grüße,
Valentin

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel - Pivot-Filter per Makro setzen
07.06.2016 10:34:09
Rudi
Hallo,
ganz schön dürftig.
Schema:
Sub aaa()
With DasBlatt.PivotTables(1)
With .PivotFields("FeldName")
.ClearAllFilters
For i = 1 To .PivotItems.Count
.PivotItems(i).Visible = Bedingung
Next
End With
End With
End Sub
Gruß
Rudi

Anzeige
AW: Excel - Pivot-Filter per Makro setzen
07.06.2016 10:57:47
Valentin
Da hast du recht sorry :/
Angenommen meine Filter hießen: Handyzahlung, Barzahlung, Rückzahlung, Kartenzahlung,
wie würde das Makro dann aussehen?

AW: Excel - Pivot-Filter per Makro setzen
07.06.2016 12:22:49
Rudi

Sub aaa()
With DasBlatt.PivotTables(1)
With .PivotFields("Zahlungsart")
.ClearAllFilters
For i = 1 To .PivotItems.Count
.PivotItems(i).Visible = instr("HandyzahlungBarzahlungRückzahlungKartenzahlung",. _
Pivotitems(i))>0
Next
End With
End With
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivot-Filter in Excel per Makro setzen


Schritt-für-Schritt-Anleitung

Um einen Pivot-Filter in Excel mit VBA zu setzen, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Einfügen eines neuen Moduls: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle Einfügen und dann Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub PivotFilterSetzen()
       With DasBlatt.PivotTables(1)
           With .PivotFields("Zahlungsart")
               .ClearAllFilters
               For i = 1 To .PivotItems.Count
                   .PivotItems(i).Visible = InStr("HandyzahlungBarzahlungRückzahlungKartenzahlung", .PivotItems(i)) > 0
               Next
           End With
       End With
    End Sub
  4. Anpassen der Filter: Ändere "Zahlungsart" und die Filterkriterien in der InStr-Funktion entsprechend deinen Anforderungen.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Lösung: Stelle sicher, dass der Name der Pivot-Tabelle und der Pivot-Felder korrekt sind.

  • Fehler: Kein Filter angewendet
    Lösung: Überprüfe, ob die Filterbedingungen korrekt definiert sind und die Werte in der Datenquelle vorhanden sind.


Alternative Methoden

Wenn VBA nicht die geeignete Lösung bietet, kannst du auch die folgenden Methoden verwenden:

  • Excel-Filter: Du kannst die Filter direkt in der Pivot-Tabelle manuell setzen.
  • Slicer: Slicer bieten eine benutzerfreundliche Möglichkeit, Filter in Pivot-Tabellen zu setzen, ohne VBA zu verwenden.

Praktische Beispiele

Hier sind einige Beispiele für verschiedene Filteranwendungen in Pivot-Tabellen:

  1. Filtern nach mehreren Kriterien:

    Sub PivotFilterBeispiele()
       With DasBlatt.PivotTables(1)
           With .PivotFields("Produkt")
               .ClearAllFilters
               Dim FilterKriterien As String
               FilterKriterien = "ProduktA,ProduktB,ProduktC"
               For i = 1 To .PivotItems.Count
                   .PivotItems(i).Visible = InStr(FilterKriterien, .PivotItems(i)) > 0
               Next
           End With
       End With
    End Sub
  2. Filtern von Datumswerten:

    Sub PivotFilterNachDatum()
       With DasBlatt.PivotTables(1)
           With .PivotFields("Bestelldatum")
               .ClearAllFilters
               For i = 1 To .PivotItems.Count
                   .PivotItems(i).Visible = .PivotItems(i) >= DateValue("01-01-2023")
               Next
           End With
       End With
    End Sub

Tipps für Profis

  • Verwende Arrays: Wenn du viele Filterkriterien hast, kann es effizienter sein, diese in einem Array zu speichern und dann zu filtern.

    Dim FilterArray As Variant
    FilterArray = Array("Handyzahlung", "Barzahlung", "Rückzahlung", "Kartenzahlung")
  • Makros optimieren: Reduziere die Bildschirmaktualisierung während der Ausführung deines Makros mit Application.ScreenUpdating = False.


FAQ: Häufige Fragen

1. Wie kann ich einen Filter für mehrere Pivot-Felder setzen?
Du kannst einfach mehrere With .PivotFields("Feldname") Blöcke in deinem Makro verwenden, um verschiedene Felder zu filtern.

2. Was ist der Unterschied zwischen Visible und ClearAllFilters?
Visible legt fest, ob ein Pivot-Element angezeigt wird, während ClearAllFilters alle bestehenden Filter entfernt und die Sichtbarkeit aller Elemente zurücksetzt.

3. Wie kann ich einen Filter rückgängig machen?
Du kannst die Methode .ClearAllFilters verwenden, um alle Filter in der Pivot-Tabelle zu entfernen.

Mit diesen Anleitungen und Tipps bist du gut gerüstet, um Pivot-Filter in Excel per Makro zu setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige