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

Array mit Split befüllt und nicht mehr auslesbar

Array mit Split befüllt und nicht mehr auslesbar
01.02.2024 14:19:01
SebastianSchelb
Hallo zusammen,
ich habe ein Problem mit einem Array auslesen. Meine CSV-Datei besteht aus vielen Zeilen und der Delimiter ist ";".
Aus einer .csv-Datei lade ich per Split (Zeilenumbruch) Funktion jede Zeile in das erste Array.

1Array(0) = Zeile 1
1Array(1) = Zeile 2
....

Anschließend wird wieder mit der Split (Delimiter) Funktion das erste Array in ein zweites "2D" Array geladen.

2Array(0,1) = Zeile 1 Reihe 1
2Array(0,2) = Zeile 1 Reihe 2
....

Damit das funktioniert, muss ich beim zweiten Array die Größe mit Dimensionieren (arrData(100000))
Das Array wird auch richtig befüllt.

Jetzt kommt das Problem beim auslesen. Will ich das Array auslesen, kommt eine Fehlermeldung "Falsche Anzahl an Dimensionen".
z.B. debug.print 2Array(0,1)
Das macht ja auch Sinn, da ich auch nur eine Dimension zugewiesen haben und jetzt zwei abrufen möchte. Weise ich zwei Dimensionen zu, geht die Split Zuweisung nicht mehr.

Kann mir bitte jemand Helfen. Am liebsten würde ich auch gerne alle Zeilen und Spalten der CSV-Datei direkt in nur ein Array laden.

Hier ein Teil meines Codes:


Dim sarrInputRows
Dim arrData(100000)

arrInputRows = Split(Input(LOF(1), 1), vbCrLf)
lngArrDataMaxColumn = UBound(arrInputRows)
For i = 1 To lngArrDataMaxColumn
If StrCount(arrInputRows(i), ";") > lngArrDataMaxRow Then lngArrDataMaxRow = StrCount(arrInputRows(i), ";") ' genaues vergleichen
arrData(i - 1) = Split(arrInputRows(i), cstrDelim)
Next i
arrInputRows = arrInputRows + 1

'Array auf TB schreiben
For i = 0 To lngArrDataMaxColumn
For j = 0 To lngArrDataMaxRow
Sheets("FileSave").Cells(i + 1, j + 1) = arrData(i, j) 'GEHT NICHT
Next j
Next i


Grüße Sebastian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array mit Split befüllt und nicht mehr auslesbar
01.02.2024 14:59:21
Alwin Weisangler
Hallo,

du vordimensionierst das arrData eindimensional und willst es zweidimensional in Tabelle schreiben. Das ist der Fehler.
Die vordimensionierte Größe des Arrays sollten man auch überdenken und vielleicht mit Redim Preserve das Array am Ende wenigstens kürzen.

Gruß Uwe
AW: Array mit Split befüllt und nicht mehr auslesbar
01.02.2024 18:16:00
Sebastian Schelb
Hallo Uwe,
danke für deine schnelle Antwort. Am liebsten würde ich das zweite Array gar nicht vordimensionieren, so wie das Erste, aber das scheint nicht zu gehen.
Was bringt es mir, das Array mit redim wieder zu verkleinern?
Grüße Sebastian
AW: Array mit Split befüllt und nicht mehr auslesbar
01.02.2024 17:20:48
daniel
Hi
du hast hier kein zweidimensionales Array, sondern ein eindimensionales, bei dem die Werte aber wiederum eindimensionale Arrays sind.
wenn man in einem solchen Konstrukt auf den Einzelwert zugreifen will, geht das so: arrData(i)(j)
die Frage ist, wenns ne CSV Datei ist, warum liest du die nicht direkt ins Tabellenblatt ein?
oder öffnest die Datei und kopierst dir dann die Daten daraus?

wenn man per VBA eine CSV-Datei öffnet, muss man zusätzlich den Parameter Local:=True verwenden, damit das Semikolon als Trennzeichen erkannt wird.

gruß Daniel
Anzeige
AW: Array mit Split befüllt und nicht mehr auslesbar
01.02.2024 18:24:20
Sebastian Schelb
Hallo Daniel,
danke für deinen Input. Mit (i)(j) funktioniert es.

Ich muss die Daten auf verschiedenen TBs einsortieren und dachte am einfachsten ist es die Werte in ein Array einzulesen, dann die CSV Datei zu schließen und anschließend die Daten auf die TBs zu verteilen.
Außerdem hatte ich das Problem, dass Excel die Spalte in der CSV nicht erkannt hat, aber das versuchen ich auch mal mit Local:=True.

Gibt es eine schöne Lösung die CSV-Daten in ein zweidimensionales Array zu bekommen?

Auf jeden Fall hast du mir schon gut weiter geholfen. Danke!
Grüße Sebastian
Anzeige
AW: Array mit Split befüllt und nicht mehr auslesbar
01.02.2024 21:36:00
Daniel
Gibt es eine schöne Lösung die CSV-Daten in ein zweidimensionales Array zu bekommen?

Dim DeinArray as Variant

Workbooks.Open "Pfad\Dateiname", Local:=true
DeinArray = ActiveSheet.UsedRange.Value
ActiveWorkbook.Close false
AW: Array mit Split befüllt und nicht mehr auslesbar
02.02.2024 07:53:23
SebastianSchelb
Hi Daniel,
vielen dank für den Code. Er ist einfach, kurz und macht genau das was er soll!

Diese Forum und die Helfenden User*innen sind einfach super. Danke

Grüße Sebastian

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige