Microsoft Excel

Herbers Excel/VBA-Archiv

Filter mit mehreren Kriterien

Betrifft: Filter mit mehreren Kriterien von: Richi
Geschrieben am: 09.10.2020 12:20:08

Guete Tag
Habe 2 Tabellen (Quelle & Ziel) beides sind formatierte Tabellen.
Ich möchte nun in Ziel / Spalte A einen Autofilter setzen welcher alle in in Quelle hinterlegten Daten als Selektionskriterien für den Filter verwendet.

Hierzu hab ich folgenden Code zusammengestellt welcher aber nicht funktioniert und ich komm nicht darauf warum.
Mir schein Array der richtige Weg zu sein. Bin mir da nicht sicher.

https://www.herber.de/bbs/user/140761.xlsm

Sub Autofilter()

Dim wb As Workbook
Dim WsZ As Worksheet
Dim wsQ As Worksheet
Dim x As Long
Dim lz As Long

Set wb = ThisWorkbook
Set wsQ = wb.Worksheets(""Quelle"")
Set WsZ = wb.Worksheets(""Ziel"")
lz = Cells(wsQ.Rows.Count, ""A"").End(xlUp).Row

MeinArr = wsQ.Range(Tabelle2)
MeinArr = rg
   WsZ.Range.Autofilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(1, rg)
End Sub
"

Betrifft: AW: Filter mit mehreren Kriterien
von: Hajo_Zi
Geschrieben am: 09.10.2020 14:01:34

Bei Range fehlt("A1")

GrußformelHomepage

Betrifft: AW: Filter mit mehreren Kriterien
von: Richi
Geschrieben am: 09.10.2020 15:10:13


Salü Hajo
Erhalte: Anwendungs.- oder Objektdefinierter Fehler (Laufzeit 1004), wenn ich Rang("A1") eingebe.
Richi

Betrifft: AW: Filter mit mehreren Kriterien
von: Yal
Geschrieben am: 09.10.2020 17:07:55

Hallo Richi,

Du versuchst Datum zu filtern. Diese haben einen interne komische Struktur.

Bei mir funktioniert folgendes.
Sub ZielFilter_setzen()
Dim Z
Dim Qw, Zw
Dim A()

    Set Qw = Worksheets("Quelle")
    Set Zw = Worksheets("Ziel")
    
    For Each Z In Qw.Range("A2", Qw.Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible)
        ReDim Preserve A(UBound0(A) + 2)
        A(UBound(A) - 1) = 2
        A(UBound(A)) = VBA.Format(Z.Value, "MM\/DD\/YYYY")
    Next

    Zw.Select
    Zw.ListObjects("Tabelle1").Range.Autofilter Field:=1
    Zw.ListObjects("Tabelle1").Range.Autofilter Field:=1, Operator:=xlFilterValues, Criteria2:= _
A
End Sub


Private Function UBound0(A) As Long
On Error Resume Next
    UBound0 = -1
    UBound0 = UBound(A)
End Function
Im übrigens, solltest Du versuchen, bestimmte Elemente von Spalte B, wie z.B. "Alle Mittwochs" müssstest Du die Werte anders ermitteln:
~f~=WAHL(WOCHENTAG([@Datum];2);"Montag";"Dienstag";"Mittwoch";"Donnerstag";"Freitag";"Samstag";"Sonntag")

Viel Erfolg
Yal

Betrifft: AW: Filter mit mehreren Kriterien
von: Luschi
Geschrieben am: 10.10.2020 10:02:58

Hallo Yal,

Deine Lösung funktioniert wunderbar mit Excel 2013, aber Excel 2019 stellt sich doof und _ verweigert die Ausführung von:
Zw.ListObjects("Tabelle1").Range.Autofilter Field:=1, Operator:=xlFilterValues, _
          Criteria2:=A
Leider setzt sich damit das Chaos beim Filtern von Datumswerten fort, wie es schon in ExcelXP (2002), Excel 2003, ... Excel 2016 fort und man muß per Versionsabfrage unterschiedlichen Vba-Code schreiben. Mal sehe, wie der Variante für E2019 aussieht.

Gruß von Luschi
aus klein-Paris


Betrifft: AW: Filter mit mehreren Kriterien
von: Yal
Geschrieben am: 12.10.2020 17:00:48

der "_" ist leider hier von Herbers-Forum hinzugefügt worden. War nicht mein Fehler.

Ja, die Zeitformat... eine ewige Geschichte. Aber soweit ich verstanden habe, bewegt sich MS langsam Richtung annerkanten Standards. Daher besteht Hoffnung.

VG Yal