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

Forumthread: Autofilter aufgrund Dropdown

Autofilter aufgrund Dropdown
User
Hallo zusammen
Ich hoffe ihr könnt mir weiterhelfen. Ich suche nun seit einiger Zeit nach einem Makro für einen Autofilter. Da ich leider praktisch keine VBA-Kenntnisse habe, kann ich jedoch die Codes nicht auf meine Bedürfnisse anpassen.
Ich habe folgendes Problem. Ich habe eine Datei mit 2 Tabellenblättern. In der Tabelle1 wähle ich per Dropdown (Zelle I6) den Ort aus (4 verschiedene Orte). Nun möchte ich, dass aufgrund dieser Auswahl in Tabelle2 die Spalte B die Zeilen 21-910 mittels Autofilter nur noch die Zeilen angegeben werden, die diesem Wert entsprechen.
Kann mir da jemand helfen? Ich hab versucht folgenden Code anzupassen - allerdings ohne Erfolg:
Sub Makro1()
If Target.Address(0, 0)  "I6" Then Exit Sub
Worksheets("Tabelle2").Rows(1).AutoFilter Field:=2, _
Criteria1:=Range("B21").Value
End Sub

Anzeige
AW: Autofilter aufgrund Dropdown
24.04.2012 15:22:29
Sheldon
Hi,
probier das mal aus:
Sub Makro1()
If Target.Address(0, 0)  "I6" Then Exit Sub
Worksheets("Tabelle2").Rows(1).AutoFilter Field:=2, _
Criteria1:=Range("Tabelle1!I6").Value
End Sub
klappt es?
Gruß
Sheldon
AW: Autofilter aufgrund Dropdown
24.04.2012 15:37:52
User
Hallo Sheldon
Vielen Dank für deine Antwort. Da ich wirklich keine Ahnung von VBA habe: muss ich den Code in Tabelle1 oder Tabelle2 einfügen? An beiden Orten meldet er: Laufzeitfehler 424!
Wärs einfacher, wenn ich die Zielzelle, die die Vorgabe für den Autofilter gibt ebenfalls in Tabelle 2 hätte?
Sorry für meine dummen Fragen...
Anzeige
AW: Autofilter aufgrund Dropdown
24.04.2012 16:22:44
Sheldon
Hallo,
sry, hab einen Fehler in den Code eingebaut. Dieser Code hier gehört in ein Modul (re Maus auf Datei im Projekt Explorer, Einfügen, Modul). Aber ich hatte angenommen, du hast dein Makro aufgezeichnet, dann wäre es nämlich schon in einem solchen Modul drin gewesen. Fügst du den Code in Tabelle1 oder auch 2, wird jeweils der Zugriff auf die andere Tabelle nicht funktionieren!
Sub Makro1()
Worksheets("Tabelle1").Rows(1).AutoFilter Field:=2, Criteria1:=Sheets(1).Range("I6").Value
End Sub
Gruß
Sheldon
Anzeige
AW: Autofilter aufgrund Dropdown
24.04.2012 15:36:17
Tino
Hallo,
ich hätte es so versucht und für Criteria1 die Zelle I6 angegeben.
Für den Filterbereich hätte ich den gesammten Filterbereich angegeben,
mindestens bis zur Spalte B, sonst funktioniert es nicht wenn der Filter gelöscht wird.
Sheets("Tabelle2").Range("A20:B" & Rows.Count).AutoFilter _
Field:=2, _
Criteria1:=Sheets("Tabelle1").Range("I6").Value

Gruß Tino
Anzeige
AW: Autofilter aufgrund Dropdown
24.04.2012 15:53:09
User
Irgendwie will auch der Code nicht ganz. Meldet ebenfalls Laufzeitfehler 424! Objekt erforderlich.
Um es etwas einfacher zu gestalten, hab ich jetzt mal das Suchkriterium ebenfalls in die Tabelle2 verlegt. Damit ist alles im selben Blatt.
Wie müsste der Code nun heissen, wenn ich den Text, der in Zelle J6 als Filterkriterium für Spalte B20 bis B910 anwenden will?
Das Problem ist, dass unter der Zeile 910 eine neue Tabelle folgt mit einem Zusammenzug der obigen Zellen....
Anzeige
AW: Autofilter aufgrund Dropdown
24.04.2012 15:58:08
Tino
Hallo,
lade besser mal ein Beispielmappe hoch, dann ist die Frage schnell beantwortet.
Gruß Tino
AW: Autofilter aufgrund Dropdown
24.04.2012 17:33:23
Werner
Hallo User
richtiger Name wäre schöner
vielleicht mal als Anregung aus dem Forum diese Datei.
Muss du an deine Bedürfnisse anpassen.
https://www.herber.de/bbs/user/79940.xls
Tschüs Werner
Anzeige
AW: Autofilter aufgrund Dropdown
25.04.2012 10:23:29
User
Hallo zusammen
Werner, danke für die Datei. Mein Problem ist, dass ich den Code zuwenig verstehe um ihn anzupassen. Hab zwar rumprobiert, aber das Problem zeigt sich schon beim Einfügen des Codes. Ich weiss nicht, wie ich ein Private Sub starten kann. Wenn ich das Makro mit F5 starten will, kommt immer dieses Popup mit den verschiedenen Makros, aber das gewünschte ist nicht aufgelistet...woran liegt das? Wenn ich das Private Sub umtaufe in Makro 1, geht gar nichts mehr....
Ich hab hier mal eine Beispieldatei von mir hochgeladen. Die Felder für das Suchkriterium sowie die zu sortierende Spalte habe ich rosa markiert.
https://www.herber.de/bbs/user/79948.xlsx
Ich hoffe ihr könnt mir helfen....
Gruss
Tina
Anzeige
AW: Autofilter aufgrund Dropdown
25.04.2012 13:48:08
Tino
Hallo,
hier die Anpassung,
die Datei entspricht aber nicht dem was Du zuvor beschrieben hast.
Du müsstest die Datei als xlsm abspeichern, xlsx kann kein VBA.
https://www.herber.de/bbs/user/79951.xlsm
Gruß Tino
AW: Autofilter aufgrund Dropdown
25.04.2012 14:01:22
User
Hallo Tino
Danke für den Code. Das mit dem Speicherort hab ich schon so gemacht, hab noch andere Makros drin.
Nun aber habe ich immer noch ein Problem. Wie krieg ich ein Makro zum Laufen, das mit Private Sub anfängt? Wenn ich das mit F5 starten will, erscheint es gar nicht.
Sorry für die Fragen, aber wie gesagt - ich bin eine echte Anfängerin!
Gruss
Tina
Anzeige
AW: Autofilter aufgrund Dropdown
25.04.2012 14:14:21
Tino
Hallo,
Du musst ein Eventmakro einbauen wie in der Beispieldatei in der Tabelle1 hinterlegt.
Dieser Code wird gestartet wenn Du auf der Tabelle1 in einer Zelle etwas änderst.
Gruß Tino
AW: Autofilter aufgrund Dropdown
25.04.2012 15:57:40
User
Hallo Tino
Also das hat jetzt geklappt, super! Funktioniert perfekt. Aber nun habe ich noch ein Problem.
Ich habe unter dieser Tabelle noch eine weitere Tabelle, die nicht gefiltert werden soll, da diese ein Zusammenzug der oberen Tabelle ist.
Wie kann ich den Code so anpassen, dass der Filter sich nur auf die Zeilen 20 - 100 bezieht?
Hast du dafür auch eine Lösung?
Anzeige
AW: Autofilter aufgrund Dropdown
25.04.2012 17:09:43
Tino
Hallo,
kannst mal so versuchen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("F2"), Target) Is Nothing Then
    If Tabelle2.AutoFilterMode Then Tabelle2.AutoFilterMode = False
    If Tabelle1.Range("F1").Value <> "" Then
        Tabelle2.Range("A20:C100").AutoFilter _
                        Field:=2, _
                        Criteria1:=Tabelle1.Range("F1").Value
    Else
        Tabelle2.Range("A20:C100").AutoFilter Field:=2
    End If
End If
End Sub
Gruß Tino
Anzeige
AW: Autofilter aufgrund Dropdown
26.04.2012 08:39:50
User
Hallo Tino
Hab alles gemäss deinem Code angepasst - sowohl den Code als auch das Modul. Bisher wurde die gesamte Tabelle sortiert (Zeile 20 - 250). Neu sortiert das Makro einfach nur noch die 2 Tabellen (Tabelle1 Zeile 20 - 100 / Tabelle 2 Zeile 105 - 200). Die unten angefügen Zeilen für Bemerkungen werden neu nicht mehr sortiert.
Hast du eine Idee woran es liegt? Es scheint so, als würde er alles sortieren was eine Tabelle ist....
Anzeige
AW: Autofilter aufgrund Dropdown
26.04.2012 16:32:41
Tino
Hallo,
der autofilter wirgt auf die Zeile 20 bis 100.
Zwei Filter in eine Tabelle geht nicht, dann müsstest Du die Zeilen einzeln ausblenden.
Evtl. könnte es so gehen.
https://www.herber.de/bbs/user/79959.xlsm
Gruß Tino
Anzeige
AW: Autofilter aufgrund Dropdown
27.04.2012 11:46:01
User
Hallo Tino
Das funktioniert wunderbar!
Vielen Dank für deine Hilfe
Gruss
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Autofilter mit Dropdown in Excel nutzen


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Dropdown-Liste:

    • Wähle die Zelle aus, in der das Dropdown-Menü erscheinen soll (z.B. Zelle I6 in Tabelle1).
    • Gehe zu Daten > Datenüberprüfung.
    • Wähle im Dropdown-Menü "Liste" und füge die Orte ein, die gefiltert werden sollen.
  2. VBA-Code einfügen:

    • Öffne den VBA-Editor mit ALT + F11.
    • Füge ein neues Modul hinzu: Rechtsklick auf dein Projekt > Einfügen > Modul.
    • Kopiere den folgenden Code in das Modul:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("I6")) Is Nothing Then
           Worksheets("Tabelle2").AutoFilterMode = False
           Worksheets("Tabelle2").Range("B20:B910").AutoFilter Field:=1, Criteria1:=Worksheets("Tabelle1").Range("I6").Value
       End If
    End Sub
  3. Speichere die Datei:

    • Stelle sicher, dass die Datei im .xlsm-Format gespeichert ist, da nur so VBA-Makros funktionieren.
  4. Teste den Filter:

    • Wähle einen Ort aus dem Dropdown in Zelle I6. Die Zeilen in Tabelle2 sollten nun entsprechend gefiltert werden.

Häufige Fehler und Lösungen

  • Laufzeitfehler 424: Objekt erforderlich.

    • Stelle sicher, dass der VBA-Code im richtigen Modul eingefügt ist und dass die Zellen korrekt referenziert sind.
  • Filter funktioniert nicht richtig.

    • Überprüfe, ob die Daten in Tabelle2 korrekt formatiert sind und ob der Autofilter auf die richtige Spalte angewendet wird.
  • Dropdown funktioniert nicht.

    • Vergewissere dich, dass die Datenüberprüfung korrekt eingerichtet ist und die Liste der Orte verfügbar ist.

Alternative Methoden

  • Excel Filter Dropdown erstellen:

    • Statt VBA kannst du auch die eingebaute Filterfunktion von Excel nutzen. Markiere die Daten, gehe zu Daten > Filter und aktiviere die Filteroptionen.
  • Excel Dropdown Suche:

    • Mit der Funktion "SVERWEIS" oder "INDEX und VERGLEICH" kannst du eine präzisere Filterung basierend auf Dropdown-Auswahlen implementieren.

Praktische Beispiele

  • Beispiel 1: Filter nach Städten

    • Erstelle eine Tabelle mit verschiedenen Städten in Spalte A und verwende das Dropdown in Zelle I6, um nur die relevanten Städte in Tabelle2 anzuzeigen.
  • Beispiel 2: Produktkategorie filtern

    • Verwende ein Dropdown-Menü für Produktkategorien und filtere die Produkte in Tabelle2, um nur die ausgewählten Kategorien anzuzeigen.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("I6")) Is Nothing Then
        Worksheets("Tabelle2").Range("A20:C100").AutoFilter Field:=2, Criteria1:=Worksheets("Tabelle1").Range("I6").Value
    End If
End Sub

Tipps für Profis

  • Verwende benannte Bereiche:

    • Anstatt feste Zellreferenzen zu verwenden, kannst du benannte Bereiche erstellen, um den Code flexibler und leichter wartbar zu machen.
  • Mehrere Filter kombinieren:

    • Du kannst mehrere Dropdowns verwenden, um komplexere Filterkriterien zu erstellen. Füge einfach weitere Bedingungen in deinen VBA-Code ein.
  • Benutzerdefinierte Fehlermeldungen:

    • Setze Fehlermeldungen für den Fall, dass der Filter keine Ergebnisse liefert, um die Benutzererfahrung zu verbessern.

FAQ: Häufige Fragen

1. Wo füge ich den VBA-Code ein?
Der VBA-Code sollte in ein Modul eingefügt werden, das du im VBA-Editor erstellst.

2. Warum funktioniert der Autofilter nicht?
Überprüfe, ob die Filterbereichsreferenzen korrekt sind und ob die Daten vollständig sind.

3. Kann ich den Filter auch ohne VBA verwenden?
Ja, du kannst die integrierte Filterfunktion in Excel nutzen, um einfachere Filter zu erstellen.

4. Wie kann ich mehrere Dropdowns verwenden?
Du kannst mehrere Dropdowns in verschiedenen Zellen erstellen und diese dann in deinem VBA-Code kombinieren, um komplexere Filter zu ermöglichen.

5. Ist das Speichern im .xlsm-Format notwendig?
Ja, um VBA-Makros in Excel auszuführen, musst du die Datei im .xlsm-Format speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige