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

Forumthread: Schleife und Autofilter

Schleife und Autofilter
01.10.2006 13:38:32
Andreas
Hallo zusammen,
ist es möglich, per vba den Autofilter als Schleife durchlaufen zu lassen?
Ich filter in Spalte A nach festen Kriterien, die nicht immer vorkommen müssen.
Zudem will ich in der Lage sein, die Kriterien jederzeit zu ändern oder zu ergänzen.
Hier ein Auszug der Kriterien:
AAA
AAAA
AAAAA
AAAAAA
999
9999
99999
999999
CASCH
CASCHKA
CASH_KA
CASCH_KA
Ist es möglich, die Kriterien nacheinader an den Autofilter zu überbegen,
ohne jedesmal sowas zu schreiben?
Selection.AutoFilter Field:=5, Criteria1:="999999"
If CStr(Range("b1")) = 1 Then
GoTo ERROR
End If
Range("E3:E" + Kred1).Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Range([A6], [A1].End(xlDown).End(xlToRight)).Select
Selection.Copy
Sheets("Fehler " + Value).Select
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Sheets("Abholaufträge-mit-Eingaben500-d").Select
Vielen Dank
Andreas
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Schleife und Autofilter
01.10.2006 14:22:46
Daniel
Hallo
mein Vorschlag wäre:
1. du schreibst deine Filterkrterien in ein eingenes Blatt und gibt dem Zellbereich den Namen "Kriterien"
2. du lässt dieses Makro laufen

Sub AutofilterSchleife()
Dim Zelle As Range
For Each Zelle In Range("Kriterien")
Sheets("Tabelle1").Range("A1").AutoFilter Field:=5, Criteria1:=Zelle.Value
MsgBox ("Weiter")
Next
Sheets("Tabelle1").Range("A1").AutoFilter Field:=5
End Sub

Wenn sich dir Kriterien ändern, brauchst du nur die Daten im Excelsheet anpassen, und ggf. kontrolliern, ob der Name noch auf den vollständigen Bereich verweist.
Das was Dein Makro mit den gefilterten Zellen machen soll, fügst du an der Stelle nach Msgbox("Weiter") ein.
Gruß, Daniel
Anzeige
Ergänzung
01.10.2006 14:49:38
Daniel
Hallo
du kannst dir die Kriterien auch vereinfachen, wenn du z.B. alle Daten brauchst, die mit AAA anfangen (also auch AAAA und AAAAA), dann kannst du die Autofilterfunktion "Beginnt mit" verwenden, dein Kriteriumstext müsste dann so aussehen: =AAA*
Gruß, Daniel
AW: Ergänzung
01.10.2006 19:33:06
Andreas
Hallo Daniel,
ich habe Deinen Vorschlag eingebaut und es hat den Anschein,
als würde es sehr gut funktioniern!
Danke!!
Viele Grüße
Andreas
Anzeige
;
Anzeige

Infobox / Tutorial

Schleife im Autofilter automatisieren


Schritt-für-Schritt-Anleitung

Um den Autofilter in Excel mithilfe von VBA als Schleife durchlaufen zu lassen, gehe wie folgt vor:

  1. Kriterien festlegen: Erstelle eine Liste der Filterkriterien auf einem separaten Arbeitsblatt und benenne den Zellbereich "Kriterien".

  2. Makro erstellen: Öffne den VBA-Editor (ALT + F11) und füge folgendes Makro in ein Modul ein:

    Sub AutofilterSchleife()
        Dim Zelle As Range
        For Each Zelle In Range("Kriterien")
            Sheets("Tabelle1").Range("A1").AutoFilter Field:=5, Criteria1:=Zelle.Value
            MsgBox ("Weiter")
        Next
        Sheets("Tabelle1").Range("A1").AutoFilter Field:=5
    End Sub
  3. Makro ausführen: Führe das Makro aus, indem du im VBA-Editor auf "Run" klickst oder die Tastenkombination F5 verwendest.

  4. Kriterien anpassen: Wenn du die Kriterien ändern möchtest, musst du nur die Daten im Excel-Blatt anpassen, ohne den Code zu ändern.


Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht, weil der Zellbereich "Kriterien" nicht korrekt definiert ist.

    • Lösung: Stelle sicher, dass der Bereich korrekt benannt ist und die Zellen die gewünschten Filterkriterien enthalten.
  • Fehler: Der Autofilter zeigt keine Ergebnisse.

    • Lösung: Überprüfe, ob die Daten in der Tabelle1 vorhanden sind und ob der richtige Feldindex (Field) im Makro angegeben ist.

Alternative Methoden

Eine alternative Methode, um die Filterkriterien zu vereinfachen, besteht darin, die Autofilterfunktion "Beginnt mit" zu verwenden. Du kannst beispielsweise den Kriteriumstext in dieser Form angeben:

Sheets("Tabelle1").Range("A1").AutoFilter Field:=5, Criteria1:="AAA*"

Dies filtert alle Daten, die mit "AAA" beginnen, einschließlich "AAAA" und "AAAAA".


Praktische Beispiele

Nehmen wir an, du möchtest in einer Tabelle alle Einträge filtern, die mit "CASCH" beginnen. Hier ist ein einfaches Beispiel, das du in dein Makro integrieren kannst:

Sub FilterCASCH()
    Sheets("Tabelle1").Range("A1").AutoFilter Field:=5, Criteria1:="CASCH*"
End Sub

Führe dieses Makro aus, um die gewünschten Einträge schnell zu filtern.


Tipps für Profis

  • Verwendung von Arrays: Wenn du viele Kriterien hast, kannst du die Kriterien in ein Array speichern und dann die Schleife durchlaufen, um die Filter anzuwenden.

  • Dynamische Bereiche: Stelle sicher, dass du dynamische benannte Bereiche verwendest, wenn sich deine Kriterien häufig ändern. So bleibt dein Makro flexibel und anpassungsfähig.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Kriterien gleichzeitig filtern? Du kannst die Criteria1 und Criteria2 Parameter verwenden, um mehrere Kriterien anzugeben. Zum Beispiel:

Sheets("Tabelle1").Range("A1").AutoFilter Field:=5, Criteria1:="AAA", Operator:=xlOr, Criteria2:="CASCH"

2. Kann ich den Autofilter auch ohne VBA anwenden? Ja, du kannst den Autofilter auch manuell über das Menü "Daten" in Excel aktivieren und die gewünschten Filterkriterien auswählen.

3. Wie kann ich meinen Autofilter zurücksetzen? Du kannst den Autofilter zurücksetzen, indem du Folgendes in dein Makro einfügst:

Sheets("Tabelle1").Range("A1").AutoFilterMode = False

4. Welche Excel-Version wird benötigt? Die oben genannten Methoden und Macros funktionieren in den meisten modernen Excel-Versionen, einschließlich Excel 2010, 2013, 2016 und 2019.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige