Tag Archives: AdvancedFilter

Polizei: „Ihre Reifen sind aber ganz schön abgefahren.“ Ich: „danke. Ihr Blaulicht fetzt aber auch gut.“

Ich habe mal wieder nicht aufgepasst!

Kennst du den Spezialfilter (Daten / Sortieren und Filtern / Erweitert)? Er erlaubt beispielsweise Unikate aus einer Liste herauszufiltern:

Der dahinterliegende VBA-Befehl lautet AdvancedFilter. Er ist ein Befehl (eine Methode des Zellbereichs) und einfach zu programmieren. Okay – er ist – bei großen Datenmengen – nicht sehr schnell – aber für „Kleinigkeiten“ sehr gut geeignet:

Dim xlBlatt As Worksheet
Dim xlQuellbereich As Range
Dim xlZielZelle As Range

Set xlBlatt = ActiveSheet
Set xlQuellbereich = xlBlatt.Range("A1").CurrentRegion
Set xlZielZelle = xlBlatt.Range("E1")

xlQuellbereich.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=xlZielZelle, Unique:=True

Anschließend kann man Spalte A:D löschen; die Ergebnisse sortieren, weiter verarbeiten …

Was passiert allerdings, wenn mein System keine Daten liefert? Eine leere Datenquelle:

Die Antwort: DANN läuft der Spezialfilter an die Wand! Also: aufpassen! Vorher überprüfen, ob WIRKLICH Daten vorhanden sind (xlQuellbereich.Rows.Count > 1). Sonst passiert das: