3 Kriterien im Autofilter

Bild

Betrifft: 3 Kriterien im Autofilter
von: Feliks
Geschrieben am: 16.06.2015 16:22:29

Liebes Forum,
Das soll eigentlich als Ergänzung zum letzten Autofilter-Post dienen:
Man kann ja im Autofilter durch ein Array nach mehreren Kriterien filtern:
Habe eine Spalte mit folgenden Werten:
test_UB
test1
(leer)
Reserved
test2
Ich möchte nun das Einträge die auf _UB enden weggefiltert werden sowie leere Zellen und die wo Reserved drinsteht so das am Ende übrig bleibt:
test1
test2
Habe diesen Code
Sheets(SecondLast_Sheet).Range(FirstCell, FirstCell & lastrow).AutoFilter Field:=76, Criteria1:="<>*_UB", Operator:=xlAnd, Criteria2:=Array("<>", "<>Reserved"), Operator:=xlFilterValue
der nur teilweise funktioniert. Criteria 1 funktioniert. Bei Criteria 2 bekomme immer noch die leeren Zellen. Die Reserved-EInträge sind erfolgreich weg.
Bekomme also:
test1
(leer)
test2
Wisst ihr vielleicht weiter wie noch die leeren Zellen verschwinden?
Liebe Grüße
Feliks

Bild

Betrifft: Ohne Autofilter
von: Ramses
Geschrieben am: 16.06.2015 23:28:32
Hallo
Blende die Zeilen doch einfach aus wie der Autofilter das auch macht, dann kannst du das beliebieg erweitern

Sub Makro_Filter()
Dim firstCell As Long, lastRow As Long
Dim i As Long
Dim myCheck As String
firstCell = 2
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = lastRow To firstCell Step -1
    myCheck = Cells(i, 1).Value
    If Right(myCheck, 3) = "_UB" Or myCheck = "Reserved" Or myCheck = "" Then
        Rows(i).EntireRow.Hidden = True
    End If
Next i
End Sub

Sub Show_All()
Dim firstCell As Long, lastRow As Long
firstCell = 2
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Rows(firstCell & ":" & lastRow).EntireRow.Hidden = False
End Sub

Gruss Rainer

Bild

Betrifft: AW: Ohne Autofilter
von: Feliks
Geschrieben am: 17.06.2015 08:47:34
Hallo Rainer,
danke für dein Kommentar.Das wäre auch eine Möglichkeit, nur ist diese bei ca 50000 Zeilen ziemlich langsam. Ich dachte es gäbe einen speziellen Filtertrick ;-)
Gruß
Feliks

Bild

Betrifft: AW: Ohne Autofilter
von: Ramses
Geschrieben am: 17.06.2015 22:03:00
Hallo
"... ziemlich langsam..." ?
Das ist der Code:

Sub Makro_Filter()
Dim firstCell As Long, lastRow As Long
Dim i As Long, hideRow As Long
Dim myCheck As String
firstCell = 2
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Debug.Print "Letzte Zeile: =" & lastRow
Debug.Print "Start Filter: " & Now()
For i = lastRow To firstCell Step -1
    myCheck = Cells(i, 1).Value
    If Right(myCheck, 3) = "_UB" Or myCheck = "Reserved" Or myCheck = "" Then
        Rows(i).EntireRow.Hidden = True
        hideRow = hideRow + 1
    End If
Next i
Debug.Print "Ende Filter: " & Now()
Debug.Print "Gefilterte Elemente: " & hideRow
End Sub

Das ist der Ausdruck aus meinem Debug-Fenster :-)
Letzte Zeile: = 1048575
Start Filter: 17.06.2015 21:57:03
Ende Filter: 17.06.2015 21:57:10
Gefilterte Elemente: 3
Und das sind deutlich mehr als deine 50'000 Elemente :-)
Wenn ich die Daten auf die von dir angesprochenen Elemente reduziere habe ich folgendes Ergebnis;
Letzte Zeile: =50204
Start Filter: 17.06.2015 22:02:01
Ende Filter: 17.06.2015 22:02:02
Gefilterte Elemente: 3
Und ich habe einen 5 Jahre alten Laptop :-)
Gruss Rainer

 Bild

Beiträge aus den Excel-Beispielen zum Thema "3 Kriterien im Autofilter"