AW: Filterkriterium als String übergeben
09.07.2009 17:18:42
markus2
Hallo Tino,
daran habe ich auch schon gedacht. Ich erwähnte dies auch in meiner 1. Antwort :)
Für den Autofilter ist diese Variante geeignet.
Leider nicht für den Spezialfilter. Ich will auch erklären warum:
Gegeben ist eine Tabelle mit 16.000 Zeilen, welche gefiltert werden soll.
Gegeben ist ebenfalls ein zweites Blatt mit einer Spalte, in der ~40 Filterkriterien stehen:
Diese sieht in etwa so aus: (Anzahl und Inhalt ist variabel)
AOK
=XB1+XA7
=E17+S1
=E18+S1
=E19+S1
=E20+S1
=E21+S1
E22+S1
=E23+S1
=E24+S1
=E25+S1
=E26+S1
=E28+S1
E29+S1
=E30+S1
=E31+S1
=E32+S2
=E33+S1
E34+S1
E35+S1
E36+S1
=E37+S1
=E38+S1
E39+S1
=E40+S1
E41+S1
=E42+S1
=E43+S1
=E20+S2
E23+S2
=E27+S1
=E32+S1
=E32+S3
=E40+S2
E40C+S3
=XB2+XA8
=XB2+XB8
=YG0+YA1
Der Spezialfilter wird dann wie folgt angewendet:
Sheets(1).UsedRange.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range( _
Sheets(2).Cells(1, 1), Sheets(2).Cells(endzeile, 1))
Alle Kriterien ohne Gleichheitszeichen funktionieren korrekt. Die anderen jedoch nicht.
Um mit der vorgeschlagenen Lösung arbeiten zu können, müsste:
- jede Zelle geprüft werden, ob das erste Zeichen ein "=" ist
- wenn ja, dann setzte ein 2. "=" davor
- merke dir die Zelle, in der du etwas verändert hast
- wende den Spezialfilter an
- lösche das 2. "=" wieder in den vorher gemerkten Zellen
Das ist absolut machbar - jedoch würde es mich ärgern, wenn es keinen einfacheren Weg geben würde.
Denn das richtige Filterkriterium ist ja an sich schon vorhanden.
Er darf es nur nicht als Formal interpretieren.
Nur falls ihr alle sagt "Nein, das geht nur so", dann mache ich das so :)