Ab Excel 2007 können in einem Filter beliebige Filterkriterien manuell vorgegeben werden, indem die gewünschten Werte im Filterdialog an- oder abgehakt werden. Als Ausgangsbasis dient eine kleine Liste mit Werten und Texten, siehe Abbildung 1.
Abbildung 1
In dieser Liste sollen nun die Werte a, b und g manuell gefiltert werden. Um diese Werte zu filtern, müssen die unerwünschten Einträge einfach abgehakt werden. Die Filtereinstellungen sehen Sie in Abbildung 2.
Abbildung 2
Damit werden in diesem Beispiel wunschgemäß nur die Werte a, b und g aus der Liste gefiltert werden. Die Werte c, d, e und f sollen hingegen ausgeblendet werden. Das Ergebnis sehen Sie in Abbildung 3.
Abbildung 3
Soweit so gut. Manuell lässt sich der Autofilter also ohne große Schwierigkeiten bedienen.
Aber auch per VBA kann der Autofilter gesteuer werden. Das folgende Makro zeigt, wie sich die Filterkriterien per VBA entsprechend anpassen lassen, so dass der manuelle Filtervorgang automatisiert werden kann.
{codecitation}
Sub AutoFilter_mehrere_Kriterien()
'** Autofilter mit mehreren Kriterien
'** in Spalte B setzen
'** Dimensionierung der Variablen
Dim rngFilterRange As Range
Dim lngCriteriaCount As Long
Dim arrCriteria() As String
'** Anzahl der Kriterien festlegen
lngCriteriaCount = 3
'** Variable neu dimensionieren
ReDim arrCriteria(0 To lngCriteriaCount - 1)
'** Filterkriterien festlegen
arrCriteria(0) = "a"
arrCriteria(1) = "b"
arrCriteria(2) = "g"
'** Objektvariable setzen
Set rngFilterRange = ActiveSheet.Range("A4:B23")
'** Autofilter setzen/ausführen
rngFilterRange.AutoFilter Field:=2, _
Criteria1:=arrCriteria(), _
Operator:=xlFilterValues
'** Objektvariable zurücksetzen
Set rngFilterRange = Nothing
End Sub
{/codecitation}
Wenn dieses Makro ausgeführt wird, werden ebenfalls nur die Werte a, b und g gefiltert, da diese im Code als Filterkriterien fest vorgegeben sind. Wenn Sie weitere Filterkriterien hinzufügen möchten, so ergänzen Sie einfach die Liste der Kriterien [arrCriteria(x)]. Wichtig ist auch noch dass der Variable lngCriteriaCount die korrekte Anzahl der zu verwendenden Kriterien übergeben wird.
Um die Autofilter-Einstellungen per VBA zurücksetzen zu können, verwenden Sie einfach folgenden Code:
{codecitation}
Sub AutoFilter_zuruecksetzen()
'** Autofilter in Spalte B zurücksetzen
ActiveSheet.Range("$A$4:$B$23").AutoFilter Field:=2
End Sub
{/codecitation}
Wichtig: Diese Funktion steht erst ab 2007 zur Verfügung.
Die Beispieldatei können Sie über den folgenden Link herunterladen.