Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Autofilter mehr als 3 variable Kriterien

Autofilter mehr als 3 variable Kriterien
09.11.2020 17:56:20
Peter
Hallo zusammen,
ich habe eine Tabelle mit 67 Zeilen. In jeder Zelle der Spalte C steht Prosa. (kann ich leider nicht ändern, ist so vorgegeben)
Das Sheet soll so gefiltert werden, dass nur noch Zeilen angezeigt werden, bei denen bestimmte Begriffe im Fliesstext der Spalte C vorkommen.
Die gesuchten Begriffe sind "Gerät, Garantie, Kulanz, Kostenvoranschlag"
Ich habe es mit dem benutzerdefinierten Autofilter probiert, komme aber nicht weiter, da dieser anscheinend nur 2 Criterias zulässt.
Der Makrorecorder erstellt folgendes:
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$67").AutoFilter Field:=3, Criteria1:= _
"=*Gerät*", Operator:=xlOr, Criteria2:="=*Garantie*"
Ich hab also versucht, die beiden weiteren Suchbegriffe hinten anzuknüpfen:
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$67").AutoFilter Field:=3, Criteria1:= _
"=*Gerät*", Operator:=xlOr, Criteria2:="=*Garantie*", Operator:=xlOr, Criteria3:="=*Kulanz*", Operator:=xlOr, Criteria4:="=*Kostenvoranschlag*"
Dummerweise kommt hier eine Fehlermeldung:
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler
Hat jemand eine Idee, wie sich das lösen lässt? Ich hab das Forum schon durchsucht, aber nichts passendes gefunden.
Vielen Dank im Voraus!
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter mehr als 3 variable Kriterien
09.11.2020 17:59:51
Hajo_Zi
mein Makro Recorder zeichnet die auf
ActiveSheet.Range("$A$9:$Q$14").Autofilter Field:=1, Criteria1:=Array("1", _
"2", "3"), Operator:=xlFilterValues
ich benutze Version 2016, das dürfte inm 2013 aber auch schon so sein.

AW: Autofilter mehr als 3 variable Kriterien
09.11.2020 18:07:46
Peter
Danke für die schnelle Antwort.
Zitat:
ActiveSheet.Range("$A$9:$Q$14").Autofilter Field:=1, Criteria1:=Array("1", _
"2", "3"), Operator:=xlFilterValues
Wenn ich es richtig versteh, müsste hier aber genau die "1" bzw "2" oder "3" stehen.Ich habe das Problem, dass die Werte irgendwo im Fliesstext stehen.
Aber evtl liegt der Fehler auch zwischen meinen Ohren...
Anzeige
AW: Autofilter mehr als 3 variable Kriterien
09.11.2020 18:23:49
Hajo_Zi
Du kennst die Werte also nicht also soll VBA von sich aus entscheiden was Du suchen willst.
Dazu habe ich keinen Ansatz. Da liegt wohl auch daran das ich nicht auf fremde Rechner schaue.
Viel erfoilg noch.
Gruß Hajo
Anzeige
AW: Autofilter mehr als 3 variable Kriterien
09.11.2020 18:12:10
Daniel
Hi
sobald du 2 Begriffe hast, nach denen gefiltert werden soll, läuft es nicht mehr über Criterira1 und Criteria2, sondern über das FilterArray.
im Filterarray werden dem Autofilter in einem eindimensionalen Array alle Begriffe übergeben, die angezeigt werden sollen.
Dabei müssen die volltständigen Zellinhalte angegeben werden, da das Filterarry keine Joker (*, ?) oder Vergleiche verarbeiten kann.
du müsstest also alle Texte in einem Array sammeln und dann dem Filter übergeben.
dim arr
dim txt as string
dim X
for each x in Range("C2:C67").value
if x like "*Garantie*" or x like "*Kulanz*" or x like "*Gerät*" or x like "*Kostenvoranschlag*"  _
then
txt = txt & "|" & x
end if
next
arr = split(Mid(txt, 2), "|")
ActiveSheet.Range("$A$1:$C$67").AutoFilter Field:=3, Criteria1:=arr, Operator:=7

Gruß Daniel
Anzeige
AW: Autofilter mehr als 3 variable Kriterien
09.11.2020 19:17:20
Peter
Vielen Dank, damit funktioniert es schonmal zum Großteil:
In meiner Liste kommt einer der gesuchten Begriffe in 31 Zellen vor, im gefilterten Ergebnis stehen aber nur 5. Das Ziel ist es, dass alle 31 Zeilen angezeigt werden.
Wenn ich nach dem "Then" aus deinem Beispiel eine Msgbox einfüge, kommt diese 31 mal, d.h. er findet schonmal alle, nur beim anschliessenden filtern steige ich nicht durch...
Grüße
Peter
Anzeige
AW: Autofilter mehr als 3 variable Kriterien
09.11.2020 19:32:28
Daniel
Ohne die Datei schwer zu sagen.
Hellsehen ist nicht ganz so mein metier
;
Anzeige
Anzeige

Infobox / Tutorial

Autofilter mit mehr als 3 variablen Kriterien anwenden


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe zur gewünschten Tabelle.
  2. Aktiviere den Autofilter für den entsprechenden Datenbereich. Zum Beispiel:
    ActiveSheet.Range("$A$1:$C$67").AutoFilter Field:=3
  3. Erstelle ein Array für die Suchbegriffe. In diesem Beispiel sind die Begriffe „Gerät“, „Garantie“, „Kulanz“ und „Kostenvoranschlag“.
  4. Verwende das FilterArray um die gewünschten Kriterien zu filtern:
    Dim arr
    Dim txt As String
    Dim x
    For Each x In Range("C2:C67").Value
       If x Like "*Gerät*" Or x Like "*Garantie*" Or x Like "*Kulanz*" Or x Like "*Kostenvoranschlag*" Then
           txt = txt & "|" & x
       End If
    Next
    arr = Split(Mid(txt, 2), "|")
    ActiveSheet.Range("$A$1:$C$67").AutoFilter Field:=3, Criteria1:=arr, Operator:=xlFilterValues

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dies kann passieren, wenn mehr als zwei Kriterien mit Criteria1 und Criteria2 verwendet werden. Verwende stattdessen das FilterArray.
  • Nicht alle relevanten Ergebnisse werden angezeigt: Stelle sicher, dass die Suchbegriffe im richtigen Format und an der richtigen Stelle im Code enthalten sind. Überprüfe auch, ob die Begriffe wirklich in den Zellen vorkommen.

Alternative Methoden

Eine alternative Methode zum Filtern könnte die Verwendung von VBA sein, um die Filterkriterien dynamisch zu erstellen. Hierbei kannst Du auch auf operator:=xlOr zurückgreifen, um mehrere Kriterien zu kombinieren.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie Du mehrere Kriterien in einem VBA-Skript kombinierst:

Sub AutofilterExample()
    Dim arr
    Dim txt As String
    Dim x
    For Each x In Range("C2:C67").Value
        If x Like "*Gerät*" Or x Like "*Garantie*" Or x Like "*Kulanz*" Or x Like "*Kostenvoranschlag*" Then
            txt = txt & "|" & x
        End If
    Next
    arr = Split(Mid(txt, 2), "|")
    ActiveSheet.Range("$A$1:$C$67").AutoFilter Field:=3, Criteria1:=arr, Operator:=xlFilterValues
End Sub

Tipps für Profis

  • Nutze operator:=xlFilterValues, um sicherzustellen, dass alle Werte im Filter korrekt verarbeitet werden.
  • Erstelle benutzerdefinierte Funktionen zur Wiederverwendbarkeit des Codes.
  • Achte darauf, dass du in deiner VBA-Umgebung die richtigen Referenzen gesetzt hast, um auf die Filterfunktionen zugreifen zu können.

FAQ: Häufige Fragen

1. Wie viele Kriterien kann ich mit Autofilter verwenden? Mit dem FilterArray kannst Du beliebig viele Kriterien verwenden, während die Standardoption nur zwei zulässt.

2. Warum funktioniert mein Autofilter nicht? Überprüfe, ob die Daten im korrekten Format vorliegen und dass Du die richtigen Operatoren verwendest. Achte auch darauf, dass der Autofilter auf den richtigen Datenbereich angewendet wird.

3. Gibt es eine Möglichkeit, das Ergebnis des Autofilters zu speichern? Ja, Du kannst die gefilterten Daten in einen neuen Bereich kopieren oder in eine neue Tabelle exportieren, indem Du den SpecialCells-Befehl verwendest.

ActiveSheet.Range("$A$1:$C$67").SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Zielblatt").Range("A1")

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige