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

Matrix in 3 Spalten konvertieren

Matrix in 3 Spalten konvertieren
15.03.2022 20:17:49
Frank
Guten Abend an Alle,
ich habe Daten vorliegen, welche 5710 Spalten lang und 3058 Zeilen beinhalten. Die erste Zeile beinhaltet alle x-Koordinaten. Die erste Spalte beinhaltet alle y-Koordinaten. Die restliche Matrix, sprich 5709 * 3057 entspricht den z-Koordinaten. Im Prinzip ein riesiges 3D-Feld. Ich möchte diese Daten gern in drei Spalten umschreiben, so dass ich auf einem neuen Datenblatt in Spalte 1 die x-Koordinaten, in Spalte 2 die y-Koordinaten und in Spalte 3 die zugehörigen z-Koordinaten ausgegeben bekomme.
Soweit die Aufgabe, die an und für sich lösbar ist. Das Problem ist, dass mir die maximale Zeilenanzahl von Excel einen Strich durch die Rechnung macht, da 5709 * 3057 = 17.542.413 Zeilen ergibt und Excel leider nur 1.048.576 Zeilen zur Verfügung stellt.
Was könnte ich machen, um die Daten in der gewünschten Form zu erhalten? In eine Text Datei schreiben?
Das ist der kleine Code für das Einlesen, der dann endet, weil ich nun auf dieses Problem gestoßen bin.

Sub Import_Data()
Dim Array_Einlesen(1 To 3058, 1 To 5710)
Dim i As Long, j As Long
Worksheets("Matrixdaten").Select
Application.ScreenUpdating = False
'Einlesen der Matrix
For i = 1 To 3058
For j = 1 To 5710
Array_Einlesen(i, j) = Cells(i, j).Value
Next
Next
'Umwandeln der Matrix in 3 Spalten --> X, Y, Z
Worksheets("XYZ").Select
'Umwandeln in 3 Spaltenvektoren X, Y, Z
End Sub
Eventuell hat jemand eine Idee.
Vielen Dank und viele Grüße,
Frank

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrix in 3 Spalten konvertieren
15.03.2022 20:34:40
onur

" Ich möchte diese Daten gern in drei Spalten umschreiben, so dass ich auf einem neuen Datenblatt in Spalte 1 die x-Koordinaten, in Spalte 2 die y-Koordinaten und in Spalte 3 die zugehörigen z-Koordinaten ausgegeben bekomme" ?

Aber WOZU ?
AW: Matrix in 3 Spalten konvertieren
15.03.2022 20:39:28
Frank
Guten Abend Onur,
weil das bei manchen Daten so üblich ist. Das sind sogenannte *.xyz Dateien... Da macht man das so. Ich habe mir das nicht ausgedacht.
AW: Matrix in 3 Spalten konvertieren
15.03.2022 20:48:52
onur
Bitte keine Wischi-Waschi-Antwort wie "weil es so üblich ist" oder "weil man es halt so macht" o.Ä..
Die Frage ist doch: WOZU genau brauchst DU die Daten in dieserm "Format"? Was genau hast du den mit dieser Liste noch vor, weswegen du sie so und nicht anders brauchst ?
Abgesehen davon: ich habe noch nie gesehen, dass "man" ein so schön kompaktes 2-dimensionales Array zerstückelt und in eine ellenlange eindimensionale Liste verwurschtelt. Das ist, als ob man ein Photo in winzig kleine Streifen schneidet und die Streifen zu einem ellenlangen Band aneinanderklebt.
Anzeige
AW: Matrix in 3 Spalten konvertieren
15.03.2022 20:58:24
Yal
Es würde mir auch interessieren, welche Schritte dahinter stehen, aber es macht durchaus sinn, die Daten in einem "festen" Format zu haben.
Der nicht vorhersehbare Anzahl an Spalten ist immer ein Problem bei der Übertragung zwischen Datenbanken.
Auch für statistische Bewertung ist es nachvollziehbar, dass pro Feld einen festgelegten Inhalt vorkommt.
Bilder sind auch zwar 2-dimensional sichtbar, aber gespeichert sind sie eindimensional, zumindest digitale Bilder.
VG
Yal
AW: Matrix in 3 Spalten konvertieren
15.03.2022 21:01:26
Frank
Das ist keine Wischi-Waschi-Antwort, Onur. Der Kunde möchte die Daten in diesem Format haben, sprich x in Spalte 1, y in Spalte 2 und z in Spalte 3. Ich brauche die Daten nicht in diesem Format, wohl aber der Kunde. Ich verstehe deine Einwände, aber ich habe mir dieses Format nicht ausgedacht und möchte auch nicht sparsam mit meinen Ausführungen sein. Das Programm Origin bietet die Möflichkeit von XYZ in Matrix konvertieren und umgekehrt (siehe Bild).
https://www.herber.de/bbs/user/151781.jpg
Anzeige
AW: Matrix in 3 Spalten konvertieren
15.03.2022 21:41:17
Frank
Guten Abend Onur,
ja genau das meine ich :-). Ich denke auf den ersten Blick sollte das stimmen. Vielen lieben Dank an Dich... Ich schaue mir morgen nochmal deine Code an. Wie gesagt kann ich dir nicht sagen wieso solch ein Format erwünscht ist, aber ich denke es ist auch nicht ganz unsinnig, gemäß Yal's Ausführungen.
Vielen Dank an Euch Beide und Gute Nacht.
Frank
Gerne !
15.03.2022 21:43:03
onur
AW: Matrix in 3 Spalten konvertieren
15.03.2022 20:47:31
Yal
Hallo Frank,
Es kommt danach darauf an, wie Du die Daten auswerten möchtest.
Was man noch probieren könnte, wäre über Power Query zu entpivotieren.
_ die gsamte Matrix als aktive Tabelle einschalten "Einfügen", "Tabelle", hat Überschrift: ja. (ich gehe dabei davon aus, dass kein "x" doppelt vorkommt)
_ Menü "Daten", "Aus Tabelle"
_ in Power Query Editor, erste Spalte markieren, im Menü "Transformieren", "entpivotieren", "andere Spalten entpivotieren"
_ Menü "Datei", "Schliessen und laden in ...", nur Verbindung und dem Datenmodell hinzufügen.
Dann kann man u.a. bei Pivot den Datenmodell verwenden, oder bei einem Listobjekt (aktive Tabelle), den SQL auf dem Datenbestand so beschränken, dass nicht alle Daten rüberkommen.
Ansonsten, ja, direkt in einer Datei speichern. Es sieht da so aus (Anbindung von MS Scripting Runtime nicht vergessen):

Sub DatenZuDatei_exportieren()
'mit Anbindung ("Extras", "Verweise...") an "Microsoft Scripting Runtime"
Dim fso As New FileSystemObject
Dim Datei As TextStream
Dim R As Long 'Row
Dim C As Long 'Column
Const cPfad = "C:\temp\HerberForum\Export.csv"
Set Datei = fso.OpenTextFile(cPfad, ForWriting, True)
With Worksheets("Matrixdaten")
'Überschrift (Zeile 3) exportieren
For C = 2 To 5710 'Spalten, x
For R = 2 To 3058 'Zeilen, y
Datei.WriteLine .Cells(1, C) & ";" & .Cells(R, 1) & ";" & .Cells(R, C)
Next
Next
End With
Datei.Close
End Sub
VG
Yal
Anzeige
AW: Matrix in 3 Spalten konvertieren
15.03.2022 21:11:09
Frank
Guten Abend Yal,
vielen Dank für deine Antwort. Der obere Teil deiner Nachricht wird nicht funktionieren, da die Anzahl der Zeilen zu lang ist. Dein Code sieht aber vielversprechend aus :-). Ich werde das morgen testen. Lieben Dank an Dich und Onur.
Viele Grüße,
Frank.
AW: Matrix in 3 Spalten konvertieren
15.03.2022 21:56:39
Yal
Hallo Frank,
vielen Dank für die Rückmeldung.
Du wirst sehr schnell feststellen, dass die beide Codings sehr, sehr ähnlich sind.
Ich benutze early binding, Onur late binding. Es ist die einzige Unterschied.
VG
Yal
Man könnte auch Mittelwerte verwenden
15.03.2022 21:55:56
lupo1
... und zwar aus jedem 5x5-Feld (also 25 z-Werte). Falls Dein Problem das erlaubt.
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige