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

Forumthread: Mehr als 2 Filterkriterien Autofilter auslesen

Mehr als 2 Filterkriterien Autofilter auslesen
10.10.2018 09:24:32
Sebastian
Guten Morgen,
mit dem u.a. Code können bis zu 2 Filterkriterien des Autofilters in einer Spalte ausgelesen werden. Dazu wird in eine Zelle die Funktion =AF_KRIT(Zelle) verwendet. Leider funktioniert der Code tatsächlich nur bis zu 2 Filterkriterien, bei mehr als 2 Kriterien funktioniert der Code nicht mehr.
Da ich diesbezüglich in VBA nicht fit genug bin, frage ich hier nach einer Erweiterungslösung.
Kann jemand helfen?
VG Sebastian
Public Function AF_KRIT(Bereich As Range) As String
'Liest die Kriterien des Autofilters aus und listet diese in einer Zelle
'Als Bezug dient die erste Zelle nach dem Spaltentitel: =AF_KRIT(A2)
Dim s_Filter        As String
s_Filter = ""
On Error GoTo Ende
With Bereich.Parent.AutoFilter
With .Filters(Bereich.Column - .Range.Column + 1)
s_Filter = .Criteria1
Select Case .Operator
Case xlAnd
s_Filter = s_Filter & " UND " & .Criteria2
Case xlOr
s_Filter = s_Filter & " ODER " & .Criteria2
End Select
End With
End With
Ende:
AF_KRIT = s_Filter
End Function

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehr als 2 Filterkriterien Autofilter auslesen
10.10.2018 09:53:21
UweD
Hallo
meines Erachtens gibt es auch nur 2 Benutzerdefinierte Filterkriterien
versuch doch mal händisch mehr als 2 mit und / oder einzustellen.


Oder meinst du den Filter, wo du einzelne Haken setzen kannst?
LG UweD
AW: Mehr als 2 Filterkriterien Autofilter auslesen
10.10.2018 09:55:33
Sebastian
Ja, ich meine den Autofilter, bei dem ich aus der Spalt mit x-möglichen Kriterien einzelnen anwählen kann oder abwählen kann.
VG
Sebastian
Anzeige
AW: geht, aber ...
10.10.2018 10:12:35
Fennek
Hallo,
der "alte" Autofilter geht nur mit 2 Kriterien, die aber auch "=", "" sein können. Die Erweiterung auf beliebig viele Kriterien erlaubt nur "=".
Der Rekorder zeigt die Syntax, oder besser:
http://snb-vba.eu/VBA_Autofilter_en.html
mfg
Anzeige
AW: geht, aber ...
10.10.2018 12:33:58
Sebastian
Ok, dann funktioniert das wohl nicht so wie ich gedacht habe...
Schade. Ich benötige mehr als 2 Kriterien, die ausgelesen werden können.
VG
AW: wieso schade?
10.10.2018 12:38:28
Fennek
Hallo,
der gezeigte Ansatz wird/sollte dir helfen, dein Problem zu lösen!
Wenn es auf das Auslesen ankommt, suche die "sichtbaren" Zellen in der gefilterten Spalte.
mfg
Anzeige
AW: wieso schade?
10.10.2018 15:42:47
Sebastian
Also ehrlich gesagt verstehe ich nicht, welchen Ansatz Du meinst.
Ich benötige einen Code, der mir die Filterkriterien (Anzahl n) in einer Zelle ausgibt.
Vielleicht musst Du mir hier auf die Sprünge helfen...
VG
AW: wieso schade?
11.10.2018 10:24:24
Sebastian
Wie kann ich denn die sichtbaren Zellen in der gefilterten Spalte auslesen?
VG
Sebastian
Anzeige
AW: wieso schade?
11.10.2018 10:24:32
Sebastian
Wie kann ich denn die sichtbaren Zellen in der gefilterten Spalte auslesen?
VG
Sebastian
AW: visibleCells
11.10.2018 10:44:28
Fennek
Hallo,
im ersten Schritt (Beispiel für Spalte A)

Array_Sichtbare_Zellen = Activesheet.usedrange.Columns(1).SpecialCells(xlCellTypeVisible)
mfg
(mein PC ist "down", falls nicht msgbox join(Array_sichtbare_Zellen, ", ") geht, zuerst mit EACH in andere Variable schreiben)
Anzeige
AW: Mehr als 2 Filterkriterien Autofilter auslesen
12.10.2018 16:07:31
Daniel
Hi
sobald du 3 oder mehr Elemente auswählst, ist das intern verwendete Criterium ein Array, welches alle anzuzeigenden Werte enthält.
Die Liste könnte u.U. länger werden.
der Code um auch diesen Fall auszuwwerten sieht so aus:

Public Function AF_KRIT(Bereich As Range) As String
'Liest die Kriterien des Autofilters aus und listet diese in einer Zelle
'Als Bezug dient die erste Zelle nach dem Spaltentitel: =AF_KRIT(A2)
Dim s_Filter        As String
s_Filter = ""
On Error GoTo Ende
With Bereich.Parent.AutoFilter
With .Filters(Bereich.Column - .Range.Column + 1)
Select Case .Operator
Case xlFilterValues
s_Filter = Join(.Criteria1, "; ")
Case Else
s_Filter = .Criteria1
Select Case .Operator
Case xlAnd
s_Filter = s_Filter & " UND " & .Criteria2
Case xlOr
s_Filter = s_Filter & " ODER " & .Criteria2
End Select
End Select
End With
End With
Ende:
AF_KRIT = s_Filter
End Function
Gruß Daniel
Anzeige
AW: Mehr als 2 Filterkriterien Autofilter auslesen
15.10.2018 09:21:01
Sebastian
Hallo Daniel,
funktioniert. Ich bin begeistert.
Vielen vielen Dank.
VG
Sebastian
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehr als 2 Filterkriterien im Autofilter auslesen


Schritt-für-Schritt-Anleitung

Um mehr als 2 Filterkriterien mit dem Excel Autofilter auszulesen, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es, die Filterkriterien aus einer Spalte in einer Zelle anzuzeigen.

  1. Öffne Excel und gehe zum VBA-Editor (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Kopiere den folgenden Code in das Modul:

    Public Function AF_KRIT(Bereich As Range) As String
    'Liest die Kriterien des Autofilters aus und listet diese in einer Zelle
    'Als Bezug dient die erste Zelle nach dem Spaltentitel: =AF_KRIT(A2)
    Dim s_Filter As String
    s_Filter = ""
    On Error GoTo Ende
    With Bereich.Parent.AutoFilter
       With .Filters(Bereich.Column - .Range.Column + 1)
           Select Case .Operator
               Case xlFilterValues
                   s_Filter = Join(.Criteria1, "; ")
               Case Else
                   s_Filter = .Criteria1
                   Select Case .Operator
                       Case xlAnd
                           s_Filter = s_Filter & " UND " & .Criteria2
                       Case xlOr
                           s_Filter = s_Filter & " ODER " & .Criteria2
                   End Select
           End Select
       End With
    End With
    Ende:
    AF_KRIT = s_Filter
    End Function
  4. Speichere das Modul und schließe den VBA-Editor.

  5. Verwende die Funktion in einer Zelle, z.B. =AF_KRIT(A2), um die Filterkriterien auszulesen.


Häufige Fehler und Lösungen

  • Problem: Der Code gibt nur die ersten zwei Kriterien aus.
    Lösung: Stelle sicher, dass Du die angepasste Version des Codes verwendest, die mit xlFilterValues arbeitet.

  • Problem: Die Funktion gibt einen Fehler zurück.
    Lösung: Überprüfe, ob der Autofilter korrekt auf die Spalte angewendet wurde und dass der Bereich gültig ist.


Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch den erweiterten Filter in Excel nutzen. Dieser ermöglicht es, mehrere Kriterien in einer separaten Liste festzulegen und die Daten entsprechend zu filtern.

  1. Wähle den Datenbereich aus.
  2. Gehe zu "Daten" > "Erweiterter Filter".
  3. Wähle den "Bereich der Kriterien" aus und lege Deine Filterkriterien fest.

Praktische Beispiele

Beispiel 1: Angenommen, Du hast eine Liste von Verkäufen in Spalte A und möchtest alle Verkäufe für die Produkte "A", "B" und "C" auflisten. Verwende die angepasste Funktion, um diese Kriterien auszulesen.

Beispiel 2: Wenn Du mit dem benutzerdefinierten Autofilter arbeitest und mehrere Werte in einer Dropdown-Liste auswählst, kannst Du die oben genannte VBA-Funktion verwenden, um alle gewählten Filterkriterien in einer Zelle anzuzeigen.


Tipps für Profis

  • VBA Debugging: Nutze die Debugging-Funktionen im VBA-Editor, um eine bessere Übersicht über Fehler zu erhalten.
  • Erweiterte Filter: Experimentiere mit dem erweiterten Filter, um komplexere Filterkriterien zu erstellen, insbesondere für große Datenmengen.
  • Makros: Überlege, Makros zu verwenden, um wiederholbare Aufgaben zu automatisieren und die Effizienz zu steigern.

FAQ: Häufige Fragen

1. Wie viele Kriterien kann ich im Autofilter verwenden?
Im Standard-Autofilter kannst Du direkt nur zwei Kriterien verwenden. Mit VBA kannst Du jedoch beliebig viele Kriterien auslesen.

2. Was ist der Unterschied zwischen dem normalen Autofilter und dem erweiterten Filter?
Der normale Autofilter ermöglicht einfaches Filtern mit wenigen Kriterien, während der erweiterte Filter komplexere Filterbedingungen und mehrere Kriterien in einer separaten Liste unterstützt.

3. Wie kann ich die sichtbaren Zellen in der gefilterten Spalte auslesen?
Verwende den folgenden Code, um die sichtbaren Zellen auszulesen:

Array_Sichtbare_Zellen = ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeVisible)

4. Funktioniert dieser Code in jeder Excel-Version?
Die vorgestellten VBA-Funktionen sind mit den meisten modernen Excel-Versionen kompatibel, jedoch sollte auf die spezifische Version geachtet werden, da einige Funktionen variieren können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige