# Autom. Filter mit Oder-Verknüpfung zwischen verschiedenen Spalten



## Nikhil_1 (14. März 2010)

Hallo zusammen

Die Anwendung lässt über ein Userformular viele Filtermöglichkeiten auswählen. 
Je nach ausgeführter Prozedur wurden die Zeilen in einem Worksheet entsprechend gefiltert.

Alle bisherigen Filter konnten über VBA erledigt werden. Zum Beispiel:
...
...
Selection.AutoFilter Field:=feldnr, Criteria1:="O"
 Selection.AutoFilter Field:=feldnr2, Criteria1:="J"


Die neue Anforderung soll aber eine Oder-Verknüpfung über zwei *verschiedene *Felder (Spalten)
erledigt werden.
"Zeige alle Zeilen im Sheet, welche in der Spalte B ein "X" enthält oder in Spalte C ein "Y" enthält.

Und so geht es leider nicht:
...
...
Selection.AutoFilter Field:=feldnr2, Criteria1:="J", _
 Operator:=xlOr, Field:=feldnr3, Criteria2:="X"

Muss man eine eigene Makroprozedur schreiben, welche den automatischen Filter nicht benützt?
Weiss jemand eine Lösung?

Danke im voraus.
Nikhil


----------



## tombe (15. März 2010)

Ich denke das du mit der AutoFilter Funktion hier nicht zum gewünschten Ziel kommst. Schau dir dafür mal die AdvancedFilter Funktion an.

Gehen tut es damit auf jeden Fall. Du musst die Filterkriterien nur anders angeben. Ist ein bisschen schwierig zu beschreiben, hänge deshalb mal ein Bild an wo ein Filter erstellt wird der entweder in Spalte "A" nach dem Namen "Müller" oder in Spalte "B" nach dem Wert "1" filtert.


----------



## Nikhil_1 (15. März 2010)

Hallo Tombe,

danke für den Tipp. Ich probiere ihn morgen gleich aus und melde mich dann wieder.
Habe zwischenzeitlich eine Prozedur geschrieben, welche die Zeilen einzeln durchläuft.
Damit gibt es aber andere Probleme. Daher ist mir Dein Tip sehr willkommen.

Gruß
Nikhil


----------



## Nikhil_1 (17. März 2010)

Hallo Tombe,

ich konnte Deinen Vorschlag in der aktuellen Anforderung doch nicht umsetzen,
da das Befüllen der Zeilen über ein externes Programm gemacht wird und ich in den Zeilen und Spalten nichts ändern will.

Daher läuft jetzt der Code durch die Zeilen (for each zelle in Range(bereich) ...zelle.Offset(0, x)) und prüft die Und- und Oder-Bedingungen 
selbst. Ist zwar vergleichsweise langsam (1-3 Sekunden) aber damit kann der User leben.

Ich werde mir aber Deine Lösung für die Zukunft merken.

Gruß
Nikhil


----------



## tombe (17. März 2010)

Schade das es so nicht geht. Ist es auch nicht möglich den Vorgang wie oben auf dem Bild in einem Makro nachzubauen. Dann könntest du die gemachten Angaben auch dann übernehmen wenn sie "von außen" kommen!!


----------

