Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Autofilter Kriterien aus Liste
#1
Hallo,

ich haben folgenden Code für einen Autofilter.
1. Wie kann ich die Kriterien im Array aus einer Liste in einem Tabellenblatt auslesen. Die Liste verändert sich immer wieder.
Die Liste hat auch einen Bereichsnamen wo der Bereich an die Größe der Liste angepasst wird (Formel mit Bereich.verschieben ....) = Namen


Code:
Range("B4").AutoFilter Field:=2, Criteria1:=Array( _
       "Name1", "Name2", "Name3"), Operator:=xlFilterValues

2. Können die Kriterien mit "enthält" abgefragt werden?
LG Herbert
Windows 10
Office 365
Antworten Top
#2
Hallo Herbert,

für deinen Filterbereich hast du nur eine Zelle angegeben??
willst du wirklich nur die Spalte B filtern?
was verstehst du unter "können die Kriterien mit "enthält" abgefragt werden"?

Am besten lädst du mal eine Beispielmappe hier hoch.

Gruß Werner
Antworten Top
#3
Hallo Werner,

die Liste geht über mehrere Spalten (A bis K), gefiltert wird nach Werten in der Spalte B.

Mit enthält meine ich, dass beim Filtern zB nach *Name* auch nach zB Vorname123 gefiltert wird.
Mit zwei Filterkriterien (Operator :=xlOr) geht das.
Ich habe bei meiner Suche gelesen, dass bei mehr als 3 Filterkritereien (Array) die Eingabe mit Stern nicht möglich ist, weil der Stern nicht als Platzhalter sondern als Zeichen interpretiert wird.
Gibt es eine andere Möglichkeit?

Wichtiger wäre mir der 1. Punkt. Wie bringe ich die Einträge einer Liste dynamisch in den Kriterien Array
LG Herbert
Windows 10
Office 365
Antworten Top
#4
Hallo Herbert,

ich würde, es geht ja wohl um Namen, Vorname und Nachname in verschiedene Spalten auftrennen und nicht beides in einer Spalte belassen.


Zur Aufnahme der Namen in ein Array und entsprechendem Filtern der Tabelle siehe beiliegenden Code. Den Code habe ich entsprechend kommentiert.

Keine Ahnung warum, aber ich bekomme im Moment die Musterdatei nicht hochgeladen.
Code:
Option Explicit

Public Sub Filterarray()
Dim loLetzte As Long, loLetzte1 As Long, i As Long, n As Long
Dim arFilter() As Variant

'ich bin von folgendem ausgegangen:
'Deine Namensliste befindet sich in Tabelle2
'Die Namen sind in Spalte A und beginnen ab Zeile 2
'die Namensliste ist lückenlos befüllt
With Worksheets("Tabelle2")
   'ermitteln der letzten belegten Zelle in Spalte A
   loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
   'Dimensionieren des Arrays
   ReDim Preserve arFilter(loLetzte - 2)
   'Schleife von Zeile 2 bis letzte belegte Zeile
   For i = 2 To loLetzte
       'Werte aus den Zellen ins Array schreiben
       arFilter(n) = .Cells(i, 1)
       'Zähler fürs Array hochzählen
       n = n + 1
       'nächste Zeile
   Next i
End With

'ich bin von folgendem ausgegangen:
'die Daten die gefiltert werden sollen befinden sich in Tabelle1
'Filterbereich sind die Spalten A4 bis K letzte belegte Zeile
With Worksheets("Tabelle1")
   'ermitteln der letzten belegten Zeile in Spalte A
   loLetzte1 = .Cells(.Rows.Count, 1).End(xlUp).Row
   'Filter von A bis K, Zeile 3
   .Range("A3:K3").AutoFilter
   'Filterbereich von A4 bis K letzte belegte Zeile, filtern nach Spalte B
   .Range("$A$4:$K$" & loLetzte1).AutoFilter Field:=2, Criteria1:=arFilter, Operator:=xlFilterValues
End With
End Sub



Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • herbert0803
Antworten Top
#5
Hallo Werner,

Danke, funktioniert wunderbar.
LG Herbert
Windows 10
Office 365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste