Inhaltsverzeichnis
ToggleDaten in Excel filtern
Um das Filtern besser zu verstehen, erkläre ich zunächst wie man einen Filter in einer Excel Tabelle einrichten und nutzen kann. Filter in Excel können sehr hilfreich sein. Sie erleichtern in großen Tabellen die Suche nach Daten. Ich habe daher Filter sehr häufig eingesetzt. Die Filter-Funktionalität steht auch in VBA zur Verfügung.
Einen Filter für einen Bereich einrichten
Um einen Filter für einen Bereich in Excel einzurichten, gehen man wie folgt vor:
- Auf eine beliebige Zelle im Datenbereich klicken, der gefiltert werden soll.
Dabei ist es sehr wichtig, dass der Datenbereich keinerlei Leerzeilen enthält. - Im Menüband auf das Register „Daten“ klicken.
- In der Gruppe „Sortieren und Filtern“ auf „Filtern“ klicken.
Wie in der Beispieldatei zu sehen ist befindet sich neben den Spaltenüberschriften ein Pfeil, der nach unten zeigt. Klickt Sie man auf diesen Pfeil kann man entweder einen Suchbegriff eingeben oder „Textfilter“ oder „Zahlenfilter“ klicken. Nun können Sie wählen, welche Art von Filter Sie anwenden möchten.
Filtermöglichkeiten
Filtermöglichkeit 1
Textfilter
1. Auf den Pfeil nach unten neben der Spalte „Stadt“ klicken.
2. Auf „Textfilter“ klicken.
3. Im Pop-up Fenster kann man dann zum Beispiel „Beginnt mit ….“ klicken.
Dann erscheint das Fenster „Benutzerdefinierter Autofilter„. In die blau markierte Zeile kann man beispielsweise „B“ eingeben. Dann werden alle Städte angezeigt, die mit B beginnen. Bei Bedarf kann man ein weiteres Filterkriterium eingeben und die beiden Kriterien entweder mit „Und“ oder mit „Oder“ verknüpfen.
Zahlenfilter
1. Auf den Pfeil nach unten neben der Spalte „Einwohnerzahl“ klicken.
2. Auf „Zahlenfilter“ klicken
3. Im Pop-up Fenster kann man dann zum Beispiel „Größer als …“ klicken.
Dann erscheint das Fenster „Benutzerdefinierter Autofilter„. In die blau markierte Zeile kann man beispielsweise 500000 eingeben. Dann werden alle Städte angezeigt, die eine Einwohnerzahl größer als 500000 haben. Bei Bedarf kann man ein weiteres Filterkriterium eingeben und die beiden Kriterien entweder mit „Und“ oder mit „Oder“ verknüpfen.
Filtermöglichkeit 2
Man kann einen Suchbegriff (z. B. eine Zeichenfolge oder eine Zahl) unter der blau markierten Zeile „Suchen“ eingeben.
In folgendem Beispiel wurde „Ha“ in die blau markierte Suchzeile eingegeben. Dann werden die Städte Hamburg und Hannover ausgewählt.
Filtermöglichkeit 3
Klickt man auf „(Alles auswählen)“ werden alle Häckchen vor den Einträgen gelöscht. Dann klickt man auf die gewünschten Einträge und setzt damit dort ein Häckchen
In folgendem Beispiel wurden die Städte Bremen und Duisburg ausgewählt.
Manchmal befindet sich in der zu filternden Spalte eine oder mehrere leere Zellen. Nach diesen Zellen kann gefiltert werden, in dem man auf „(leere)“ klickt.
Wichtig:
Es ist möglich, in mehreren Spalten gleichzeitig zu filtern.
Filter deaktivieren
Es gibt mehrere Möglichkeiten, einen Filter zu deaktivieren:
- Möglichkeit 1:
In der Gruppe „Sortieren und Filtern“ der Symbolleiste auf „Löschen“ klicken. - Möglichkeit 2:
In der Spalte mit dem aktivierten Filter auf den Pfeil nach unten klicken und dann auf „Filter entfernen aus „Stadt“ klicken. - Möglichkeit 3:
In der Spalte mit dem aktivierten Filter auf den Pfeil nach unten klicken und dann auf „(Alles auswählen)“ klicken.
Einen Filter entfernen
Einen Filter kann man entfernen, in dem man in der Gruppe „Sortieren und Filtern“ auf das blau markierte Symbol „Filtern“ klickt.
Daten mit VBA filtern
In VBA lassen sich die Excel-Funktionen zum Filtern von Daten in einem Tabellenblatt verwenden. Mit den Beispiel Sub-Prozeduren werden die oben gezeigten Beispiele nachgebildet.
Einen Filter für einen Bereich einrichten
Mit folgende Sub-Prozedur lässt sich ein Filter für einen Bereich einrichten
Sub FilterEinrichten()
Dim ws As Worksheet
Set ws = Worksheets("Autofilter")
If ws.AutoFilterMode = False Then
ws.Range("A1").AutoFilter
End If
Set ws = Nothing
End Sub
Filtermöglichkeiten
In VBA wird für das Filtern die „Range.AutoFilter„-Methode verwendet. Die Syntax ist
Ausdruck.AutoFilter (Field, Criteria1, Operator, Criteria2, VisibleDropDown)
wobei
- Field – Spalte, in der gefiltert werden soll
- Criteria1 – Kriterium 1, eine Zeichenfolge, z. B. „101“.
Mit „=“ können Sie leere Felder suchen, mit „<>“ Felder, die nicht leer sind, und mit „><„, Felder (ohne Daten) in Datentypen auswählen.
Fehlt dieses Argument, lautet das Kriterium „Alle“. Wenn OperatorxlTop10Items ist, gibt Criteria1 die Anzahl der Elemente an (beispielsweise „10“). - Operator – XlAutoFilterOperator-Konstante, die den Typ des Filters angibt.
- Criteria2 – Kriterium 2 (eine Zeichenfolge). Wird mit Criteria1 und Operator verwendet, um ein Verbundkriterium zu erstellen.
- VisibleDropDown – True, um den Dropdownpfeil „AutoFilter“ für das gefilterte Feld anzuzeigen. False, um den Dropdownpfeil „AutoFilter“ für das gefilterte Feld auszublenden. Der Wert ist standardmäßig auf True festgelegt.
Die möglichen Werte für die „XlAutoFilterOperator“ Konstante sind wie folgt:
Filtermöglichkeit 1
Textfilter
Mit folgender Sub-Prozedur lässt sich ein „Benutzerdefinierter Autofilter“ mit „Beginnt mit …“ B einrichten.
Sub DatenFilternAutofilter()
Dim ws As Worksheet, varArray As Variant
Set ws = Worksheets("Autofilter")
' Setzt benutzerdefinierten Autofilter
ws.Range("A1:B1").AutoFilter Field:=1, Criteria1:="B*", Operator:=xlAnd
Set ws = Nothing
End Sub
Zahlenfilter
Mit folgender Sub-Prozedur lässt sich ein „Benutzerdefinierter Autofilter“ mit „Größer als“ 500000 einrichten.
Sub DatenFilternAutofilterZahlen()
Dim ws As Worksheet
Set ws = Worksheets("Autofilter")
' Setzt benutzerdefinierten Autofilter
ws.Range("A1").AutoFilter Field:=2, Criteria1:=">500000", Operator:=xlAnd
Set ws = Nothing
End Sub
Filtermöglichkeit 2
Mit folgender Sub-Prozedur lassen sich alle Städte, die mit „Ha“ beginnen auswählen.
Sub DatenFilternEinKriterium()
Dim ws As Worksheet
Set ws = Worksheets("Autofilter")
ws.Range("A1:B1").AutoFilter Field:=1, Criteria1:="Ha*", Operator:=xlFilterValues
Set ws = Nothing
End Sub
Filtermöglichkeit 3
Mit folgender Sub-Prozedur lassen sich die Städte „Bonn“, „Berlin“, „Bremen“, „Bielefeld“, „Bochum“ filtern. Das Zuweisen eines Arrays (deutsch Datenfeldes) zum Parameter Criteria1 entspricht der Verwendung der Kontrollkästchen in der Dropdown-Liste.
Sub DatenFilternMehrereKriterien()
Dim ws As Worksheet
Set ws = Worksheets("Autofilter")
' Das Zuweisen eines Arrays (deutsch Datenfeldes) zum Parameter Criteria1 entspricht der Verwendung der Kontrollkästchen in der Dropdown-Liste.
ws.Range("A1:B1").AutoFilter Field:=1, Criteria1:=Array("Bonn", "Berlin", "Bremen", "Bielefeld", "Bochum"), Operator:=xlFilterValues
Set ws = Nothing
End Sub
Filter deaktivieren
Mit folgender Sub-Prozedur lässt sich ein Filter deaktivieren.
Sub FilterZuruecksetzen()
Dim ws As Worksheet
Set ws = Worksheets("Autofilter")
If ws.FilterMode = True Then
ws.ShowAllData
End If
Set ws = Nothing
End Sub
Den Filter entfernen
Mit der folgenden Sub-Prozedur lässt sich ein Filtern entfernen.
Sub FilterEntfernen()
Dim ws As Worksheet
Set ws = Worksheets("Autofilter")
If ws.AutoFilterMode = True Then
ws.AutoFilterMode = False
End If
Set ws = Nothing
End Sub