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

Forumthread: Filtern mit Makro und einer Variable (*)

Filtern mit Makro und einer Variable (*)
30.08.2020 10:32:20
Jürgen
Hallo zusammen,
ich will durch ein Makro eine Tabelle automatisch filtern lassen. An und für sich funktioniert das auch. Hier werden bereits einige Bezeichnungen gefiltert. Mein Problem ist, dass es auch Bezeichnungen mit wechselnden Zahlen gibt (z.B. WHPE11, WHPE25 und so weiter) die zusätzllich mit gefiltert werden müssen und die Zahlen können sich ständig ändern.
Somit wollte ich die bereits die bisherigen Bezeichnungen ergänzen mit "=WHPE*". Dies wird aber ignoriert und ich bekommen nur die anderen Ergebnisse.
Ich habe im Internet bereits einige Lösungen gefunden, die aber nicht wirklich funktionieren. Auch mit dem Makrorecorder komme ich nicht weiter, entweder wird das eine gefiltert oder das andere aber nie alles.
Hier mal der Code:
ActiveSheet.Range("$A$1:$D$48").AutoFilter Field:=4, Criteria1:=Array( _
"PEDCLC", "PEMMP", "PESCAN", "=whpe*"), Operator:= _
xlFilterValues
Beispieldatei habe ich angehängt.
https://www.herber.de/bbs/user/139914.xlsm
Danke euch schon mal!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Filtern mit Makro und einer Variable (*)
30.08.2020 11:40:34
Daniel
Hi
Im Filterarray kann Excel derzeit keine Jokerzeichen verarbeiten.
Das Array muss jeden anzuzeigenden Wert vollständig enthalten.
Dh. für so eine Filterung musst du eine Schleife programmieren, welche über die Werte der Spalte läuft und jeden infrage kommenden Wert einem eindimensionalen Array hinzugefügt, welches du dann als FilterArray verwendest.
Gruß Daniel
Anzeige
AW: Filtern mit Makro und einer Variable (*)
30.08.2020 11:45:47
Jürgen
Hallo Daniel,
Danke für deine Antwort.
Dies übersteigt meine VBA Kenntnisse. Ich werde mich mal darüber im Internet schlau machen.
AW: Lösung gibts hier gleich um die ecke
30.08.2020 12:28:14
Jürgen
Hallo Ralf,
werd ich gleich mal testen.
Danke dir!
AW: Lösung gibts hier gleich um die ecke
30.08.2020 12:28:21
Jürgen
Hallo Ralf,
werd ich gleich mal testen.
Danke dir!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Filtern mit Excel-Makros und Variablen


Schritt-für-Schritt-Anleitung

Um eine Tabelle mit einem Excel-Makro automatisch zu filtern, kannst du den folgenden Schritten folgen:

  1. Öffne Excel und erstelle ein neues Makro:

    • Gehe zu Entwicklertools > Visual Basic.
    • Füge ein neues Modul hinzu.
  2. Füge den folgenden VBA-Code ein:

    Sub FilterTabelle()
       Dim ws As Worksheet
       Set ws = ActiveSheet
    
       Dim filterArray() As String
       Dim i As Integer
       Dim k As Integer
    
       ' Initialisiere das Filter-Array
       filterArray = Split("PEDCLC,PEMMP,PESCAN", ",")
    
       ' Durchlaufe die Spalte und füge passende Werte hinzu
       For i = 1 To ws.Cells(ws.Rows.Count, 4).End(xlUp).Row
           If ws.Cells(i, 4).Value Like "WHPE*" Then
               ReDim Preserve filterArray(k)
               filterArray(k) = ws.Cells(i, 4).Value
               k = k + 1
           End If
       Next i
    
       ' Setze den Filter
       ws.Range("$A$1:$D$48").AutoFilter Field:=4, Criteria1:=filterArray, Operator:=xlFilterValues
    End Sub
  3. Führe das Makro aus:

    • Gehe zurück zu Excel und starte das Makro über Entwicklertools > Makros.

Häufige Fehler und Lösungen

  1. Fehler: "Das Array muss jeden anzuzeigenden Wert vollständig enthalten."

    • Lösung: Stelle sicher, dass du alle Werte in das Filter-Array aufnimmst. Verwende eine Schleife, um die Werte dynamisch zu erfassen.
  2. Fehler: Filter zeigt keine Ergebnisse an.

    • Lösung: Überprüfe die Filterkriterien. Stelle sicher, dass die Daten in der richtigen Spalte sind und dass du die Filter korrekt gesetzt hast.

Alternative Methoden

Eine Alternative zur Verwendung von VBA ist der Einsatz des Excel-Filtertools. Hier kannst du manuell Filter setzen, jedoch ist dies nicht so automatisiert wie ein Makro.

  1. Manuelles Filtern:

    • Wähle die Daten aus und gehe zu Daten > Filter.
    • Setze die Filterkriterien über die Dropdown-Listen in den Kopfzeilen.
  2. Power Query:

    • Nutze Power Query für komplexere Filteroperationen. Hier kannst du Daten importieren und dynamisch filtern, ohne VBA zu verwenden.

Praktische Beispiele

Hier ist ein einfaches Beispiel für ein Excel-Makro, das die Tabelle filtert:

Sub BeispielFilter()
    ActiveSheet.Range("$A$1:$D$48").AutoFilter Field:=2, Criteria1:=">1000"
End Sub

In diesem Beispiel filtert das Makro alle Werte in der zweiten Spalte, die größer als 1000 sind. Du kannst die Kriterien anpassen, um unterschiedliche Daten zu filtern.


Tipps für Profis

  • Verwende Option Explicit: Füge dies am Anfang deiner Module hinzu, um sicherzustellen, dass alle Variablen deklariert werden.
  • Fehlerbehandlung einfügen: Implementiere On Error Resume Next und On Error GoTo 0, um potenzielle Fehler abzufangen.
  • Vermeide Hardcoding: Nutze Variablen für Bereiche und Kriterien, um die Wartbarkeit deines Codes zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehrere Spalten zu filtern?
Du kannst einfach weitere AutoFilter-Befehle hinzufügen oder die Criteria1-Parameter in deinem Code erweitern, um weitere Spalten zu berücksichtigen.

2. Funktioniert dieses Makro in allen Excel-Versionen?
Ja, das Makro sollte in den meisten aktuellen Excel-Versionen, die VBA unterstützen, funktionieren. Achte darauf, dass Makros in deinen Excel-Einstellungen aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige