Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1872to1876
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

Daten in Array einlesen und Filtern

Daten in Array einlesen und Filtern
18.03.2022 14:19:46
David
Hallo,
ich möchte Daten in einen Array einlesen, darin nach bestimmten Kriterien filtern und die gefunden Datensätze wieder ausgeben.
Das Einlesen in den Array klappt schon mal:
ich bekomme es aber partout nicht hin diese Daten nun zu filtern und wieder auszugeben.
Die Rohdaten im Array bestehen aus 3 Spalten und 3 Zeilen
Land, Datum, Anzahl
DE, 01.03.2022, 5
CH, 10.10.2022, 10
AT, 17.10.2022,15
Jetzt soll beispielsweise nach den Daten mit Datum größer als 05.10.2022 und Land = AT gefiltert werden und diese wieder ausgegeben werden.
Kann mir das jemand im Code ergänzen? Anbei die kleine Testdatei
https://www.herber.de/bbs/user/151843.xlsm
Vielen Dank für die Hilfe
David

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in Array einlesen und Filtern
18.03.2022 14:35:38
Daniel
Hi
Filtern in einem 2-Array kenne ich nicht.
Ich würde per Schleife die Werte in ein neues Array übertragen und dabei die unerwünschten überspringen:
wenns einen nicht stört, dass das neue Array am Ende leere Zeilen hat, einfach so:

dim zK as long, zG as long, s as long
arrKomplett = hier Wertzuweisung aus der Tabelle
redim arrGefiltert(1 to ubound(arrKomplett, 1), 1 to Ubound(arrKomplett, 2))
for zK = 1 to ubound(arrKomplett, 1)
if arrKomplett(zK, 1) = "CH" AND arrKomplett(zK, 2) > CDate("05.10.2022") then
zG = zG + 1
for s = 1 to ubound(arrKomplett, 2)
arrGefiltert(zG, s) = arrKomplett(zK, s)
next s
end if
next zK
wenn das Array genau passend groß sein soll, müsstest du die Anzahl der Zeilen vorab ermitteln und entsprechend dimensionieren:
also

Redim arrGefiltert(1 to Worksheetfunction.CountIF(Columns(1), "CH", Columns(2), ">" & Clng(Cdate("05.10.2022"))), 1 to ubound(arrKomplett, 2))
denn nachträgliches redimensionieren ohne Datenverlust geht nur bei Spalten, aber nicht bei Zeilen
Gruß Daniel
Anzeige
AW: Daten in Array einlesen und Filtern
18.03.2022 14:55:20
David
Hallo Daniel,
danke für die schnelle Antwort. Dann habe ich mir das mit dem Filtern falsch vorgestellt. Aber deine Lösung würde mir auch passen.
Noch zwei Fragen. Wo im Code müsste dann die Zeile hin, damit der neue Array passend dimensioniert wird? Ich habe da versucht vor deinen Code zu bauen, dann kommt aber die Fehlermeldung: Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft.
Und wie kann ich den neuen Array dann wieder ausgeben?
Danke. Ich habe noch nie mit Arrays gearbeitet.
David
AW: Daten in Array einlesen und Filtern
18.03.2022 16:00:29
Daniel
naja, im Code steht doch drin, wo das Array auf größe gebracht wird, in der Zeile, die mit ReDim beginnt.
da darfst du für die Anzahl der Zeilen nicht die Anzahl der Zeilen des Ausgangsarrys nehmen (Ubound(arr, 1)) sondern musst dafür ermitteln, wieviele Zeilen sich aus deinen Filterkriterien ergeben.
Dazu kann man ZählenWenns verwenden (muss im Code also auch CountIFs heißen und nicht CountIf)
Gruß Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige