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

Forumthread: AutoFilter Criteria

AutoFilter Criteria
25.04.2017 10:43:14
tyroler
Hallo Zusammen,
ich bearbeite folgenden Code:
With WsS
If .AutoFilterMode Then .AutoFilterMode = False
Set Daten = .Range(.Cells(2, 1), .Cells(.Rows.Count, 15).End(xlUp))
With Daten
.AutoFilter Field:=3, Criteria1:=a
.AutoFilter Field:=5, Criteria1:=b
.AutoFilter Field:=10, Criteria1:=c
.AutoFilter Field:=15, Criteria1:="500", Operator:=xlBottom10Items
End With
End With
Beim AutoFilter Field 15 möchte ich mir mir die Spalte vom kleinsten zum größten Anzeigen lassen.
Ich habe eine Arbeitsmappe mit 20.000Zeilen.
Wenn ich den Code oben anwende, werden mir die 7 höchsten angezeigt.
Wenn ich Criteria"500" auf 10000 erhöhen will, kommt immer eine Fehlermeldung, dass der Wert zwischen 1 und 500liegen muss.
Ich verstehe nicht ganz, warum ich für diesen Filter überhaupt ein Criteria brauche bzw. wie kann ich das Problem lösen, dass nur die Annordnung vom kleinsten zum größten angezeigt wird´?
Vielen DAnk für eure Hilfe
Tyroler
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: AutoFilter Criteria
25.04.2017 11:06:14
Michael
Hallo!
Ich verstehe nicht ganz, warum ich für diesen Filter überhaupt ein Criteria brauche
Brauchst Du in dem Fall auch nicht. Du wendest zuerst auf Deinen Datenbereichs-AutoFilter die jeweiligen Filter mit Kriterien an, und dann sortierst Du den Blatt-Autofilter nach der gewünschten Spalte, schematisch:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.ActiveSheet
Dim Daten As Range
With Ws
Set Daten = .Range("A1:C29")
If .AutoFilterMode Then .AutoFilterMode = False
Daten.AutoFilter field:=1, Criteria1:="b"
With .AutoFilter
.Sort.SortFields.Clear
.Sort.SortFields.Add _
Key:=Daten.Columns(3), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.Apply
End With
End With
End Sub
LG
Michael
Anzeige
AW: AutoFilter Criteria
25.04.2017 11:17:11
tyroler
Hallo Michael,
vielen Dank für die rasche Antwort.
So ganz verstehe ich es noch nicht ganz.
Ich habe aber mehrere Filter die in der Tabelle angewendet werden.
Hier nochmals mehr von meinem Code:
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsR As Worksheet: Set WsR = Wb.Worksheets("Tabelle1")
Dim WsS As Worksheet: Set WsS = Wb.Worksheets("Tabelle2")
Dim WsT As Worksheet: Set WsT = Wb.Worksheets("Tabelle3")
Dim WsX As Worksheet: Set WsX = Wb.Worksheets("Tabelle4")
Dim Daten As Range
Dim a As Integer
Dim b As Integer
Dim c As String
a = Worksheets("Tabelle1").Range("C5").Value
b = Worksheets("Tabelle1").Range("C6").Value
c = Worksheets("Tabelle1").Range("C7").Value
With WsS
If .AutoFilterMode Then .AutoFilterMode = False
Set Daten = .Range(.Cells(2, 1), .Cells(.Rows.Count, 15).End(xlUp))
With Daten
.AutoFilter Field:=3, Criteria1:=a
.AutoFilter Field:=5, Criteria1:=b
.AutoFilter Field:=10, Criteria1:=c
.AutoFilter Field:=15, Criteria1:="500", Operator:=xlBottom10Items
End With
End With
In Spalte 15 soll nun die Reihenfolge vom kleinsten zum größten erfolgen.
Dankeschön
Grüße
Johannes
Anzeige
AW: AutoFilter Criteria
25.04.2017 11:26:07
Michael
Hallo!

With WsS
If .AutoFilterMode Then .AutoFilterMode = False
Set Daten = .Range(.Cells(1, 1), .Cells(.Rows.Count, 15).End(xlUp))
With Daten
.AutoFilter Field:=3, Criteria1:=a
.AutoFilter Field:=5, Criteria1:=b
.AutoFilter Field:=10, Criteria1:=c
End With
With .AutoFilter
.Sort.SortFields.Clear
.Sort.SortFields.Add _
Key:=Daten.Columns(15), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
.Sort.Apply
End With
End With

Anzeige
AW: Achso, Daten-Bereich anpassen,...
25.04.2017 11:28:40
Michael
...den hab ich bei mir jetzt ab A1 gehabt.
LG
Michael
AW: Achso, Daten-Bereich anpassen,...
25.04.2017 12:03:25
tyroler
Dankeschön, das klappt schon mal :)
jetzt noch eine kleine Frage.
In der Ausgegeben Tabelle werden jetzt der Reihenfolge nach der kleinste bis zum größten Wert angezeigt.
Mit welchem Befehl mach ich das genau umgekehrt - sprich vom größten bis zum Kleinsten?
Dankeschön
Grüße
Johannes
Anzeige
AW: Absteigend sortieren dann so...
25.04.2017 12:28:54
Michael
...statt
Order:=xlAscending, _
nimmst Du
Order:=xlDescending, _
;-), aber das hättest Du doch auch selbst herausfinden können, oder?
LG
Michael
AW: Absteigend sortieren dann so...
25.04.2017 13:16:40
tyroler
Vielen Dank!
jetzt wo du es sagt - definitv ja
Hab mir nur ein Buch bzgl. VBA programmierung gekauft und da stehen diese zwei Befehle garnicht drinnen.
Dankeschön :)
Anzeige
AW: Gerne, und noch ein Tipp...
25.04.2017 13:29:17
Michael
...bzgl. ein Buch ... und da stehen diese zwei Befehle garnicht drinnen:
Du kannst viel über Befehle herausfinden, indem Du den grds. Vorgang einmal manuell ausführst und dabei ein Makro aufzeichnen lässt. Das gibt Dir, wie zB in diesem AutoFilter-Fall, dann die grds. Bezeichnungen etc. auf die Du dann aufbauen kannst bzw. in der VBA-Hilfe, etc. weitere Infos einholen kannst.
LG
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

AutoFilter Criteria in Excel VBA


Schritt-für-Schritt-Anleitung

Um den AutoFilter in Excel VBA effektiv zu nutzen, folge diesen Schritten:

  1. Arbeitsmappe und Arbeitsblätter festlegen:

    Dim Wb As Workbook: Set Wb = ThisWorkbook
    Dim Ws As Worksheet: Set Ws = Wb.ActiveSheet
  2. Datenbereich definieren:

    Dim Daten As Range
    Set Daten = Ws.Range("A1:C29") ' Beispielbereich
  3. AutoFilter aktivieren:

    If Ws.AutoFilterMode Then Ws.AutoFilterMode = False
  4. Filterkriterien anwenden:

    With Daten
       .AutoFilter Field:=1, Criteria1:="b" ' Beispielkriterium
    End With
  5. Sortieren der gefilterten Daten:

    With Ws.AutoFilter
       .Sort.SortFields.Clear
       .Sort.SortFields.Add Key:=Daten.Columns(3), Order:=xlAscending
       .Sort.Apply
    End With

Häufige Fehler und Lösungen

  • Fehler: "Der Wert muss zwischen 1 und 500 liegen."

    • Lösung: Überprüfe deine Criteria1-Einstellung und stelle sicher, dass du den richtigen Zahlenbereich verwendest. Du kannst das Kriterium auch anpassen, um einen größeren Bereich zuzulassen.
  • Fehler: "AutoFilter kann nicht auf einen leeren Bereich angewendet werden."

    • Lösung: Stelle sicher, dass der Datenbereich nicht leer ist und dass du ihn korrekt definiert hast, bevor du den Filter anwendest.

Alternative Methoden

Eine alternative Methode zur Verwendung des AutoFilter ist die Verwendung von Excel-Funktionen direkt in den Zellen. Du kannst auch die Filteroptionen im Excel-Menü verwenden, um Daten visuell zu filtern, ohne VBA zu programmieren.


Praktische Beispiele

Um das Filtern und Sortieren noch besser zu verdeutlichen, hier ein vollständiges Beispiel:

Sub FilterAndSortData()
    Dim Wb As Workbook: Set Wb = ThisWorkbook
    Dim Ws As Worksheet: Set Ws = Wb.Sheets("Tabelle1")
    Dim Daten As Range
    Set Daten = Ws.Range("A1:O20000") ' Beispiel für einen großen Datenbereich

    If Ws.AutoFilterMode Then Ws.AutoFilterMode = False

    With Daten
        .AutoFilter Field:=3, Criteria1:=1 ' Beispiel: Filter auf Spalte 3
        .AutoFilter Field:=5, Criteria1:=">100" ' Beispiel: Filter auf Spalte 5
    End With

    With Ws.AutoFilter
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=Daten.Columns(15), Order:=xlAscending
        .Sort.Apply
    End With
End Sub

Tipps für Profis

  • Verwende Criteria1 und Criteria2: Wenn du excel autofilter multiple criteria benötigst, kannst du sowohl Criteria1 als auch Criteria2 verwenden, um komplexere Filter zu erstellen.

  • Makros aufzeichnen: Wenn du dir unsicher bist, wie du bestimmte Filter oder Sortierungen anwendest, kannst du Excel nutzen, um deine Aktionen aufzuzeichnen. Das erzeugt den entsprechenden VBA-Code, den du anpassen kannst.

  • Versteckte Zeilen: Denke daran, dass der AutoFilter auch versteckte Zeilen betrifft. Achte darauf, dass deine Daten korrekt formatiert sind.


FAQ: Häufige Fragen

1. Wie setze ich mehrere Kriterien im AutoFilter? Du kannst mehrere Kriterien mit Criteria1 und Criteria2 im AutoFilter verwenden.

2. Wie kann ich die Sortierreihenfolge ändern? Um die Sortierreihenfolge zu ändern, kannst du Order:=xlDescending anstelle von Order:=xlAscending verwenden.

3. Gibt es eine Möglichkeit, den AutoFilter ohne VBA zu nutzen? Ja, du kannst den AutoFilter auch direkt über die Excel-Oberfläche aktivieren und die Filteroptionen verwenden, ohne Code zu schreiben.

4. Wie kann ich den AutoFilter auf einen bestimmten Bereich anwenden? Definiere den gewünschten Bereich als Range, bevor du den Filter anwendest, um sicherzustellen, dass nur die relevanten Daten gefiltert werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige