Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Autofahrer mit mehreren Platzhaltern

Autofahrer mit mehreren Platzhaltern
06.09.2022 15:12:01
Andrea
Hallo In die Runde,
Ich hoffe jemand kann mir bei meinem Problem helfen. Ich möchte in einer Tabelle in der dritten Zeile nach drei Werten mit einem Platzhalter filtern weil ich sonst ein riesiges Array erstellen müsste. Wie bekomme ich das hin, ich hab da grad ne Brett vorm Kopf...

Sub Filtertest ()
ActiveSheet.ListObjects("Tabelle1").Range.Autofilter Field:=3, Criterial:= Array("A100*", "B100*", "C100*"), Operator:=xlFilterValues
End Sub
Obiger Code funktioniert nur wenn ich ein Filterelement entferne, also nur mit zwei Platzhaltern arbeite. Ich benötige aber mindestens drei weil hinter den ersten 4 Zeichen noch weitere kommen. Wie kann ich das umsetzen?
Lieben Gruß
Andrea

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

Betreff
Datum
Anwender
Anzeige
AW: Autofahrer mit mehreren Platzhaltern
06.09.2022 15:30:47
Daniel
Hi
bei Filtern mit Array muss im Array jeder Wert, der angezeigt werden soll, mindestens einmal vollständig aufgelistet sein. Joker sind nicht zulässig.
dh du musst entweder das riesige Array erstellen, was aber kein Problem sein sollte, da Excel Arrays sehr schnell bearbeiten kann und du auch große Arrays mit tausenden Einträgen in den Filter einstellen kannst.
die andere alternative wäre, dass du der Liste eine hilfsspalte hinzufügst, dort bspw mit =Links(A1;4) dir nur die ersten 4 Zeichen anzeigen lässt und dann einen filter auf diese Zeile anwendest.
ansonsten halt wie oben beschrieben, Filter-Array per schleife erstellen und anwenden, um die Größe mach dir mal keine Sorgen

dim arr1, arr2
dim i as long
arr1 = ActiveSheet.ListObjects("Tabelle1").Range.Columns(3).value
redim arr2(1 to ubound(arr1, 1))
for i = 1 to ubound(arr1, 1)
if arr1(i, 1) like "[ABC]100*" then arr2(i) = arr1(i, 1)
next
ActiveSheet.ListObjects("Tabelle1").Range.Autofilter Field:=3, Criterial:= arr2, Operator:=xlFilterValues
Gruß Daniel
Anzeige
AW: Autofilter mit mehreren Platzhaltern
07.09.2022 08:52:45
Andrea
Guten Morgen Daniel,
So ich hab deinen Codeschnipsel ausprobiert und leider kommt ein Laufzeitfehler dabei raus. Was mir dabei auch noch nicht klar ist wie den Code mit mehreren Filterargumenten anwenden will. Wäre lieb wenn du das noch mal erklären/beschreiben würdest.
Gruß Andrea
AW: Autofilter mit mehreren Platzhaltern
07.09.2022 09:19:19
Daniel
Naja wenn du einen Fehler in deiner Programmierung bekommst, dann musst du den Fehler korrigieren.
Wenn du möchtest, dass dir jemand dabei hilft, musst du schon genauer sagen, welcher Fehler und in welcher Zeile der Fehler auftritt
Eigentlich ist das Prinzip einfach
Zuerst lädst du dir alle Werte der Filterspalte in ein Array
Dann dimensionierst du dir ein eindimensionales array mit gleicher Elementanzahl.
Mit einer Schleife läufst du über jedes Element des ersten Arrays und prüfst, ob es den gewünschten Filterbedingungen entspricht. Wenn ja, schreibst du an die gleiche Position des eindimensionalen Array wenn nein lässt du die Position leer.
Zum Schluss verwendet du das eindimensionale Array als Filterkriterium.
Gruß Daniel
Anzeige
AW: Autofahrer mit mehreren Platzhaltern
07.09.2022 09:52:02
Rudi
Hallo,
warum nicht Spezialfilter?
z.B.
I1: =C1 (Überschrift)
I2: A100*
I3: B100*
etc.

Sub yyy()
Range("Tabelle1[#All]").AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range(Range("I1"), Range("I1").End(xlDown)), Unique:=False
End Sub
Gruß
Rudi
alt, aber gut
07.09.2022 11:11:50
Daniel
zumindest hier
;-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige