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

AutoFilter Field:=1, Criteria1:=Array( _

Forumthread: AutoFilter Field:=1, Criteria1:=Array( _

AutoFilter Field:=1, Criteria1:=Array( _
Sonnenpeter
Hallo,
ich versuche gerade vergeblich eine Autofilterfunktion zu entwerfen.
Aufzeichnungsergebnis
Sub Makro3()
ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:=Array( _
"12", "28", "29"), Operator:=xlFilterValues
End Sub

Programierversuch
Sub AutoFilterEinstellen()
Dim Filterwerte, Fwert As String
FilterwertKontrolle = 0
Range("R2").Activate
For i = 1 To 1573
ActiveCell.Offset(1, 0).Activate
If ActiveCell.Value = "X" Then
Fwert = ActiveCell.Offset(0, -17).Value
If FilterwertKontrolle = Fwert Then
Else
Filterwerte = Filterwerte & Fwert & Chr(34) & ", " & Chr(34)
FilterwertKontrolle = Fwert
End If
End If
Next
TextLänge = Len(Filterwerte)
Filterwerte = Left(Filterwerte, TextLänge - 4)
Filterwerte = Chr(34) & Filterwerte & Chr(34) 'zeigt ""12", "28", "29""
Stop
ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:=Array(Filterwerte), Operator:= _
xlFilterValues
End Sub
Ich mutmaße, das der Hund "12", "28", "29" hier begraben ist, deshalb auch Chr(34)
aber egal wie, ich komme zu keinem Ergebnis, es werden immer alle Zeilen ausgeblendet.
Was mache ich Falsch?
Gruß SP
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: AutoFilter Field:=1, Criteria1:=Array( _
29.10.2009 22:40:57
Sonnenpeter
Hallo,
ich habe noch ein weiteres Makro aufgezeichnet
Sub Makro2()
ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:=Array("1" _
, "1047", "1053", "1055", "12", "257", "262", "264", "265", "28", "29", "9"), Operator:= _
xlFilterValues
End Sub
Das funzt dann auch Problemlos.
Nur wie kann ich Criteria1:=Array("1" _
, "1047", "1053", "1055", "12", "257", "262", "264", "265", "28", "29", "9")

Programmieren?
Na vielleicht kommt ja noch was, meine www Recherchen waren erfolglos.
Gruß SP
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

AutoFilter in Excel VBA richtig anwenden


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  3. Schreibe den VBA-Code für den AutoFilter:

    • Verwende den folgenden Beispielcode, um den AutoFilter auf ein bestimmtes Feld anzuwenden:
    Sub AutoFilterEinstellen()
       ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:=Array("12", "28", "29"), Operator:=xlFilterValues
    End Sub
  4. Führe das Makro aus:

    • Klicke auf Run oder drücke F5, um das Makro auszuführen.

Häufige Fehler und Lösungen

Problem: Keine Filterung erfolgt oder alle Zeilen werden eingeblendet.
Ursache: Möglicherweise ist das Criteria1 nicht korrekt formatiert oder die angegebenen Werte stimmen nicht mit den Daten überein.

Lösung: Überprüfe, ob die Werte im Array korrekt sind und ob sie mit den Daten in der entsprechenden Spalte übereinstimmen.

Problem: Fehler beim Ausführen des Makros mit Criteria1:=Array(Filterwerte).
Ursache: Der Filterwert muss ein korrekt formatiertes Array sein.

Lösung: Stelle sicher, dass die Filterwerte richtig zusammengesetzt sind. Ein Beispiel könnte so aussehen:

Dim Filterwerte As Variant
Filterwerte = Array("12", "28", "29")
ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:=Filterwerte, Operator:=xlFilterValues

Alternative Methoden

  1. Verwendung von Criteria1:="=" für einen einzelnen Wert:

    • Wenn du nur nach einem bestimmten Wert filtern möchtest, kannst du auch den direkten Vergleich verwenden:
    ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:="=12"
  2. Filterung nach mehreren Kriterien mit Criteria1:=Array(...):

    • Um mehrere Kriterien gleichzeitig zu verwenden, setze die Kriterien in ein Array, wie zuvor gezeigt.

Praktische Beispiele

  • Beispiel 1: Filtern nach mehreren Werten:
Sub MehrereWerteFiltern()
    ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:=Array("1", "1047", "1053"), Operator:=xlFilterValues
End Sub
  • Beispiel 2: Dynamisches Erstellen der Filterkriterien:
Sub DynamischeFilter()
    Dim Filterwerte As String
    Dim Fwert As String
    Dim i As Long

    For i = 1 To 10 ' Beispiel für die Anzahl der Zeilen
        Fwert = Cells(i, 1).Value
        If Fwert <> "" Then
            Filterwerte = Filterwerte & Fwert & ","
        End If
    Next i

    Filterwerte = Left(Filterwerte, Len(Filterwerte) - 1) ' Letztes Komma entfernen
    ActiveSheet.Range("$A$2:$A$1573").AutoFilter Field:=1, Criteria1:=Split(Filterwerte, ",")
End Sub

Tipps für Profis

  • Verwende Debug.Print für die Fehlerbehebung: Wenn dein Filter nicht funktioniert, drucke die Werte, die du versuchst zu filtern, in das Direktfenster, um sicherzustellen, dass sie korrekt sind.

  • Nutze xlFilterValues für eine bessere Performance: Diese Option ist optimal, wenn du mit großen Datenmengen arbeitest und die Filtergeschwindigkeit maximieren möchtest.

  • Behalte die Excel-Version im Auge: Einige Funktionen können je nach Excel-Version variieren. Stelle sicher, dass du eine aktuelle Version verwendest, um alle VBA-Funktionen zu nutzen.


FAQ: Häufige Fragen

1. Warum funktioniert mein AutoFilter nicht?
Möglicherweise stimmt das Format der Kriterien nicht oder die Daten in der Spalte sind nicht im erwarteten Format.

2. Kann ich auch nach Text filtern?
Ja, du kannst Criteria1:=Array("Text1", "Text2") verwenden, um nach Textwerten zu filtern.

3. Wie kann ich den Filter zurücksetzen?
Verwende ActiveSheet.AutoFilterMode = False, um alle Filter zu entfernen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige