Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1428to1432
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

3 Kriterien im Autofilter

3 Kriterien im Autofilter
16.06.2015 16:22:29
Feliks
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ohne Autofilter
16.06.2015 23:28:32
Ramses
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

Anzeige
AW: Ohne Autofilter
17.06.2015 08:47:34
Feliks
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

AW: Ohne Autofilter
17.06.2015 22:03:00
Ramses
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige