Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Autofilter mehrere Spalten

VBA Autofilter mehrere Spalten
25.06.2019 09:06:35
Matthias
Guten Morgen,
ich weiß, dass der Autofilter schon verschiedentlich behandelt wurde hier, habe aber trotzdem eine entsprechende Frage.
Ich habe ein Tabellenblatt mit folgenden Spalten:
Kreis/Bundesland/Dienstleister/Anbieter/etc
In den Zeilen befinden sich natürlich mehrere bzw. alle Kreise eines Bundeslandes und die entsprechenden Dienstleister/Anbieter
In einer Userform habe ich pro Bundesland eine Checkbox, die den Autofilter im Tabellenblatt betätigt. Die nicht versteckten Zeilen werden dann in einer Listbox angezeigt. Das Filtern mit den Checkboxen funktioniert auch alles wunderbar mit diesem Code:
Private Sub Auswahl_BL() ' Autofilter nach Bundesland
Dim sngIndex As Single
Dim ialngCount As Long
Dim astrFilterArray() As String
For sngIndex = 1 To 16
If Wettbewerbstafel("CheckBox" & CStr(sngIndex)).Value = True Then
ReDim Preserve astrFilterArray(ialngCount)
astrFilterArray(ialngCount) = Choose(sngIndex, "Baden-Württemberg", "Bayern", _
"Berlin", "Brandenburg", "Bremen", "Hamburg", _
"Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", _
"Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", " _
Thüringen")
ialngCount = ialngCount + 1
End If
Next
With Sheets("Tabelle1").Range("A:L")
If ialngCount > 0 Then
Call .AutoFilter(Field:=2, Criteria1:=astrFilterArray, Operator:=xlFilterValues)
Else
Call .AutoFilter(Field:=2)
End If
End With
End Sub

Wenn ich aber jetzt mit weiteren Checkboxen zusätzlich nach Anbieter filtern möchte klappt das nicht (unzulässige Verwendung von Null). Dazu habe ich ein weiteres Sub hinzugefügt, welches gleich dem obigen ist (Werte angepasst).
Private Sub Auswahl_AB() ' Autofilter nach Anbieter
Dim sngIndex As Single
Dim ialngCount As Long
Dim astrFilterArray() As String
For sngIndex = 17 To 25
If Wettbewerbstafel("CheckBox" & CStr(sngIndex)).Value = True Then
ReDim Preserve astrFilterArray(ialngCount)
astrFilterArray(ialngCount) = Choose(sngIndex, "XX", "XX", "XX", "XX", "XX", "XX", " _
XX", "XX", "Siehe Kommentarfeld", "Unbekannt")
ialngCount = ialngCount + 1
End If
Next
With Sheets("Tabelle1").Range("A:L")
If ialngCount > 0 Then
Call .AutoFilter(Field:=4, Criteria1:=astrFilterArray, Operator:=xlFilterValues)
Else
Call .AutoFilter(Field:=4)
End If
End With
End Sub

Wenn ich nur nach Anbieter mit dem ersten Code filtere geht das auch. Warum denn wohl nicht beides? Wisst Ihr hier Rat?
Vielen Dank.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Autofilter mehrere Spalten
25.06.2019 13:09:31
fcs
Hallo Matthias,
passe folgende Zeile An:
Choose(sngIndex - 16, "XX", "XX", "XX", "XX", "XX", "XX", " _
XX", "XX", "Siehe Kommentarfeld", "Unbekannt")
Bei Befehl "Choose" beginnt der Index für die Werte immer bei 1
LG
Franz
AW: VBA Autofilter mehrere Spalten
25.06.2019 13:48:57
Matthias
Moin Franz,
das war die Lösung. Ich bin begeistert, wäre ich im Leben nicht drauf gekommen.
Recht herzlichen Dank dafür.
Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Autofilter für mehrere Spalten in Excel


Schritt-für-Schritt-Anleitung

Um den Excel VBA Autofilter für mehrere Spalten zu nutzen, kannst du folgende Schritte ausführen:

  1. Öffne dein Excel-Dokument und gehe zu dem Arbeitsblatt, das gefiltert werden soll.
  2. Erstelle eine Userform mit Checkboxen für die verschiedenen Filterkriterien, z.B. Bundesländer und Anbieter.
  3. Verwende den folgenden VBA-Code, um den Autofilter zu implementieren:
Private Sub Auswahl_BL() ' Autofilter nach Bundesland
    Dim sngIndex As Single
    Dim ialngCount As Long
    Dim astrFilterArray() As String
    For sngIndex = 1 To 16
        If Wettbewerbstafel("CheckBox" & CStr(sngIndex)).Value = True Then
            ReDim Preserve astrFilterArray(ialngCount)
            astrFilterArray(ialngCount) = Choose(sngIndex, "Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen")
            ialngCount = ialngCount + 1
        End If
    Next
    With Sheets("Tabelle1").Range("A:L")
        If ialngCount > 0 Then
            Call .AutoFilter(Field:=2, Criteria1:=astrFilterArray, Operator:=xlFilterValues)
        Else
            Call .AutoFilter(Field:=2)
        End If
    End With
End Sub
  1. Füge ähnliche Subroutinen für andere Spalten hinzu, z.B. für Anbieter:
Private Sub Auswahl_AB() ' Autofilter nach Anbieter
    Dim sngIndex As Single
    Dim ialngCount As Long
    Dim astrFilterArray() As String
    For sngIndex = 17 To 25
        If Wettbewerbstafel("CheckBox" & CStr(sngIndex)).Value = True Then
            ReDim Preserve astrFilterArray(ialngCount)
            astrFilterArray(ialngCount) = Choose(sngIndex - 16, "XX", "XX", "XX", "XX", "XX", "XX", "XX", "XX", "Siehe Kommentarfeld", "Unbekannt")
            ialngCount = ialngCount + 1
        End If
    Next
    With Sheets("Tabelle1").Range("A:L")
        If ialngCount > 0 Then
            Call .AutoFilter(Field:=4, Criteria1:=astrFilterArray, Operator:=xlFilterValues)
        Else
            Call .AutoFilter(Field:=4)
        End If
    End With
End Sub
  1. Teste deine Userform, um sicherzustellen, dass die Filter korrekt angewendet werden.

Häufige Fehler und Lösungen

  • Fehler: "Unzulässige Verwendung von Null": Dieser Fehler tritt häufig auf, wenn ein Array nicht korrekt initialisiert ist oder wenn der Index nicht stimmt. Stelle sicher, dass der Index bei der Verwendung von Choose korrekt angepasst ist.

  • Lösung: Achte darauf, dass der Index in der Choose-Funktion immer bei 1 beginnt. Wenn der Index anders ist, kann das zu Fehlern führen.


Alternative Methoden

Neben VBA kannst du auch die integrierten Filterfunktionen von Excel nutzen:

  1. Markiere die Daten in deinem Tabellenblatt.
  2. Gehe zu Daten > Filter und aktiviere den Autofilter.
  3. Wähle die gewünschten Filterkriterien direkt aus den Dropdown-Listen aus.

Diese Methode ist besonders nützlich, wenn du keine VBA-Kenntnisse hast.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit den Spalten „Kreis“, „Bundesland“, „Dienstleister“ und „Anbieter“. Möchtest du nach mehreren Bundesländern und bestimmten Anbietern filtern:

  • Setze die Checkboxen für die gewünschten Bundesländer.
  • Verwende AutoFilter, um die Daten in der Tabelle zu filtern und die Ergebnisse in einer Listbox anzuzeigen.

Mit dem oben genannten VBA-Code kannst du diese Filter über mehrere Spalten einsetzen und gleichzeitig mehrere Kriterien anwenden.


Tipps für Profis

  • Verwende die AutoFilter-Methode, um komplexe Filter zu setzen, z.B. mit Operator:=xlAnd oder Operator:=xlOr, um verschiedene Filterkriterien zu kombinieren.
  • Experimentiere mit benutzerdefinierten Filterkriterien, um spezifische Daten abzufragen.
  • Denke daran, dass die Filter nur auf sichtbare Zellen angewendet werden. Um sicherzustellen, dass alle relevanten Daten angezeigt werden, entferne vorherige Filter.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Spalten gleichzeitig filtern?
Du kannst die AutoFilter-Methode mehrfach aufrufen, um verschiedene Spalten mit unterschiedlichen Kriterien zu filtern.

2. Was mache ich, wenn die Filteroptionen nicht angezeigt werden?
Stelle sicher, dass die Daten als Tabelle formatiert sind oder dass die Autofilter-Funktion aktiviert ist.

3. Ist VBA notwendig, um mehrere Spalten zu filtern?
Nein, du kannst auch die integrierten Filterfunktionen von Excel verwenden, aber VBA bietet mehr Flexibilität und Automatisierung.

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