VBA Autofilter mit Kriteriumsarray
Schritt-für-Schritt-Anleitung
Um den VBA Autofilter mit einem Kriteriumsarray korrekt zu verwenden, folge diesen Schritten:
-
Öffne Excel und lade dein Arbeitsblatt mit den Daten, die du filtern möchtest.
-
Öffne den VBA-Editor mit ALT + F11.
-
Füge ein neues Modul hinzu:
- Klicke auf "Einfügen" und dann auf "Modul".
-
Gib folgenden Code ein, um nach mehreren Begriffen in Spalte A zu filtern:
Sub FilterWithArray()
Range("A1:A100").AutoFilter Field:=1, Criteria1:=Array("Hund", "Katze", "Maus", "Baum"), Operator:=xlFilterValues
End Sub
-
Führe das Makro aus: Drücke F5 oder gehe zu "Run" -> "Run Sub/UserForm".
-
Teste den Filter und überprüfe die Ergebnisse.
Wenn du nach Kriterien suchst, die "enthält", kannst du den Code anpassen. Beachte jedoch, dass der AutoFilter in Excel nur zwei Kriterien mit Wildcards akzeptiert.
Häufige Fehler und Lösungen
-
Problem: Der Filter zeigt keine Ergebnisse an.
- Lösung: Stelle sicher, dass das Array maximal zwei Einträge mit Wildcards enthält. Beispielsweise:
Range("A1:A100").AutoFilter Field:=1, Criteria1:=Array("*un*", "*tz*"), Operator:=xlFilterValues
-
Problem: Der Autofilter funktioniert nicht mit mehr als zwei Wildcards.
- Lösung: Verwende stattdessen
AdvancedFilter für komplexere Filteranwendungen.
Alternative Methoden
Wenn du mehr als zwei Kriterien verwenden möchtest, gibt es alternative Methoden:
-
Advanced Filter: Nutze den AdvancedFilter von Excel, um nach mehreren Kriterien zu filtern. Beispiel:
Sub AdvancedFilterExample()
Range("C1:C4") = WorksheetFunction.Transpose(Array(Range("A1").Value, "*un*", "*tz*", "*au*"))
Range("A1:A100").AdvancedFilter xlFilterInPlace, Range("C1:C4"), , False
Range("C1:C4").Clear
End Sub
-
VBA Arrays: Du kannst auch eigene Filterlogik in VBA erstellen, um mehr Flexibilität zu erhalten.
Praktische Beispiele
Hier sind einige Beispiele, wie du den VBA Autofilter mit einem Kriteriumsarray verwenden kannst:
-
Beispiel 1: Filtern nach Tieren
Sub FilterAnimals()
Range("A1:A100").AutoFilter Field:=1, Criteria1:=Array("Hund", "Katze"), Operator:=xlFilterValues
End Sub
-
Beispiel 2: Filtern mit Wildcards
Sub FilterWithWildcards()
Range("A1:A100").AutoFilter Field:=1, Criteria1:=Array("*un*", "*tz*"), Operator:=xlFilterValues
End Sub
Beachte, dass bei Verwendung von Wildcards, das Array nicht mehr als zwei Elemente enthalten sollte, da Excel sonst die Wildcards ignoriert.
Tipps für Profis
- Nutze Wildcard-Zeichen (
* für mehrere Zeichen, ? für ein einzelnes Zeichen) effektiv, um deine Filterkriterien präzise zu definieren.
- Kombiniere Filter: Du kannst die Filterergebnisse kombinieren, indem du mehrere
AutoFilter-Aufrufe innerhalb einer Subroutine verwendest.
- Dokumentiere deinen Code: Halte deinen VBA-Code sauber und dokumentiere die Filterkriterien, um die Wartung zu erleichtern.
FAQ: Häufige Fragen
1. Warum funktioniert mein VBA Autofilter nicht mit mehr als zwei Kriterien?
Die AutoFilter-Methode in Excel akzeptiert nur zwei Kriterien mit Wildcards, da das Array sonst als ein einzelnes Kriterium interpretiert wird.
2. Gibt es eine Möglichkeit, mehrere Filterkriterien zu verwenden?
Ja, du kannst AdvancedFilter verwenden, um mehrere Kriterien gleichzeitig zu filtern.
3. Wie kann ich Wildcards in meinem Filter verwenden?
Verwende * und ? in deinen Kriterien, um Platzhalter zu setzen. Achte darauf, dass du nicht mehr als zwei Wildcards gleichzeitig im AutoFilter verwendest.
4. Funktioniert dieser Code in allen Excel-Versionen?
Die gezeigten Beispiele sind ab Excel 2007 und höher anwendbar, da der AutoFilter und die VBA-Methoden in diesen Versionen standardisiert sind.