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

Forumthread: Dynamischer Autofilter

Dynamischer Autofilter
30.07.2013 14:59:02
Daniel
Hallo liebes Herber Forum,
ich stehe vor einer für mich unlösbaren Aufgabe:
Ich habe eine Tabelle in der ich 2 Spalten nach Kriterien über eine Auswahl filtern möchte. Das ganze klappt auch ganz gut über den Spezialfilter. Habe diesen über eine Makroaufzeichnung gespeichert und zwei Buttons (einmal für filtern und einmal alles anzeigen) eingefügt.
Da die Liste jedoch ständig verändert wird d.h. Zeilen hinzugefügt und gelöscht werden, funktioniert die Suche nicht mehr einwandfrei da der Bereich ja vorher festgelegt wurde.
Ist das ganze vielleicht mit einem kurzen VBA code machbar?
Kann mir einer von euch Hinweise geben wie so was auszusehen hat, da ich kaum Programmier-Kenntnisse habe?
Vielen Dank im Voraus für eure Bemühungen
beste Grüße
Daniel

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamischer Autofilter
30.07.2013 15:12:18
Doris
Hallo Daniel,
Wenn Du in deine Makro nachfolgende Zeilen aufnimmst und in deinem Filter diese Zeilen_Zahl als

Dim Zeilen_Zahl As Integer                         ' belegte Zeilen
Zeilen_Zahl = Cells(Rows.Count, "A").End(xlUp).Row

und im Filter diese Zeilen_Zahl nutzt siehe nachfolgendes Bsp.
ActiveSheet.Range("$A$1:$H$" & Zeilen_Zahl).AutoFilter Field:=4, Criteria1:="M*", Operator:=xlAnd, Criteria2:="S*"

Hoffe es hilft Dir
Doris

Anzeige
AW: Dynamischer Autofilter
30.07.2013 15:29:03
Daniel
Hallo Doris,
Danke für die schnelle Antwort. Das könnte mit Sicherheit klappen nur leider reichen meine VBA Kentnisse nicht aus.
Ich habe im Feld Criteria1:="A8", Criteria2:="B8" eine Auswahl Feld über die möglichen Suchbegriffe. Diese sollen mit Spalte B für A8 und Spalte G für B8 verglichen und angezeigt werden.
Die Zeilen sollte hierbei veränderbar sein
Hier kurz der aufgezeichnete makro:
Sub Filtern_Kostenstelle_Schulungsart()
' Filtern_Kostenstelle_Schulungsart Makro
ActiveWindow.SmallScroll Down:=-9
Range("A14:H31").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("Liste!Criteria"), Unique:=False
End Sub
Wäre es dir möglich es bitte kurz anzupassen, komme echt nicht weiter?!
Daniel

Anzeige
AW: Dynamischer Autofilter
30.07.2013 15:59:22
Doris
Hallo Daniel,
versuch's mal so
Sub Filtern_Kostenstelle_Schulungsart()
' Filtern_Kostenstelle_Schulungsart Makro
Dim Zeilen_Zahl As Integer
Zeilen_Zahl = Cells(Rows.Count, "A").End(xlUp).Row                  'belegte Zeilen in  _
Spalte A
ActiveWindow.SmallScroll Down:=-9
Range("A14:H" & Zeilen_Zahl).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=  _
_
Range("Liste!Criteria"), Unique:=False
End Sub
Gruß Doris
Wenns nicht klappt, einfach noch mal melden

Anzeige
Vielen Dank
30.07.2013 16:25:30
Daniel
Hallo Doris,
Super sache, Zeilen sind beliebig veränderbar, genau das was ich gesucht habe.
Besten Dank und alles gute
Daniel

AW: Vielen Dank
30.07.2013 17:09:57
Doris
Hallo Daniel,
VBA hat so seine Tücken. Kann ich ein Lied von singen. Hier bei Herber habe ich so manche Lösung gefunden. Inzwischen erschlage ich ne ganze über auf meinen Bedarf zugeschnitten Prozeduren oder Funktionen.
Kommt natürlich auf das an, was man braucht.
Also Dann einen schönen Feierabend
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamischer Autofilter in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und stelle sicher, dass deine Daten in einem klar strukturierten Bereich vorliegen.

  2. Füge einen Button hinzu:

    • Gehe zu "Entwicklertools" > "Einfügen" und wähle einen Button aus.
    • Weise dem Button ein Makro zu, das du später erstellst.
  3. Erstelle ein neues Makro:

    • Gehe zu "Entwicklertools" > "Makros" > "Neu".
    • Verwende den folgenden VBA-Code, um einen dynamischen Filter zu erstellen:
    Sub Filtern_Kostenstelle_Schulungsart()
       Dim Zeilen_Zahl As Integer
       Zeilen_Zahl = Cells(Rows.Count, "A").End(xlUp).Row ' Belegte Zeilen in Spalte A
       ActiveSheet.Range("A14:H" & Zeilen_Zahl).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("Liste!Criteria"), Unique:=False
    End Sub
  4. Verwende den dynamischen Filter:

    • Klicke auf den Button, um deine Daten basierend auf den Kriterien, die in "Liste!Criteria" definiert sind, zu filtern.
  5. Teste den Filter:

    • Füge einige Zeilen hinzu oder lösche welche, um zu sehen, ob der Filter weiterhin korrekt funktioniert.

Häufige Fehler und Lösungen

  • Fehler: Der Filter funktioniert nicht nach Zeilenänderungen:

    • Stelle sicher, dass du die Zeilen-Zahl dynamisch berechnest, wie im oben genannten Makro.
  • Lösung: Anpassung der Kriterien:

    • Überprüfe, ob die Kriterien korrekt im "Liste!Criteria" Bereich definiert sind.
  • Fehler: Makro lässt sich nicht ausführen:

    • Stelle sicher, dass du die Makros in Excel aktiviert hast. Gehe zu "Datei" > "Optionen" > "Trust Center" > "Einstellungen für das Trust Center" und aktiviere die Makros.

Alternative Methoden

  • Verwendung von Excel Spezialfilter:

    • Nutze den Spezialfilter über das Menü "Daten" > "Erweiterte Filter", um manuell Daten zu filtern.
  • Excel dynamische Filter:

    • Experimentiere mit dynamischen Tabellen, die sich automatisch aktualisieren, wenn du Daten hinzufügst oder entfernst.

Praktische Beispiele

  • Beispiel 1: Filtern nach Kostenstelle

    • Wenn du die Kostenstelle in Zelle A8 und die Schulungsart in B8 hast, kannst du den Filter so anpassen:
    ActiveSheet.Range("A14:H" & Zeilen_Zahl).AutoFilter Field:=1, Criteria1:=Range("A8").Value, Operator:=xlAnd, Criteria2:=Range("B8").Value
  • Beispiel 2: Filtern nach mehreren Kriterien

    • Du kannst auch mehrere Kriterien kombinieren, um spezifischere Ergebnisse zu erhalten.

Tipps für Profis

  • VBA lernen:

    • Investiere Zeit, um VBA zu lernen. Es erweitert deine Möglichkeiten, Excel dynamisch zu nutzen.
  • Makros optimieren:

    • Halte deinen Code sauber und gut kommentiert, damit du später leichter Anpassungen vornehmen kannst.
  • Verwende Named Ranges:

    • Nutze benannte Bereiche, um die Lesbarkeit deines Codes zu verbessern, besonders bei großen Datenmengen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Filter dynamisch bleibt?
Verwende immer die Cells(Rows.Count, "A").End(xlUp).Row Methode, um die letzte belegte Zeile zu ermitteln.

2. Kann ich den dynamischen Filter auch ohne VBA verwenden?
Ja, du kannst die Filterfunktion in Excel manuell verwenden, jedoch bietet VBA mehr Flexibilität und Anpassungsmöglichkeiten.

3. Was sind die Vorteile des dynamischen Filters?
Er ermöglicht es dir, deine Daten in Echtzeit zu filtern, ohne dass du die Filterkriterien manuell aktualisieren musst, was bei großen Datenmengen Zeit spart.

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