Array transponieren?

Bild

Betrifft: Array transponieren? von: Jochen
Geschrieben am: 23.03.2005 21:59:00

Hallo,

VBA gut ist übertrieben, aber nur mit Rekorder stimmt auch nicht.

Ich muss ein Array von der Form Array(1 to 5, 1 to x) in die Form
Array(1 to x, 1 to 5) transponieren.
Da das u.a. anderm auch in VB 6.0 funktionieren muss, kann ich nicht
über Zellen gehen oder eine Worksheetfunction verwenden.

Hat jemand eine Idee wie das gehen könnte, möglichst ohne das in zwei
Schleifen umzuschaufeln?

Grüße Jochen

Bild


Betrifft: AW: Array transponieren? von: Cardexperte
Geschrieben am: 24.03.2005 07:56:49

Hello Jochen,
also hier nur der Weg, ich würde 2 Schleifen machen und die einzelnen Werte dann jeweils wieder neu zuweisen, also so (nicht ausprobiert)

for Zeile=1 to 5
for Spalte=1 to x 'x der Wert der maximal vorhanden ist
cells(Spalte,Zeile).value= cells(Zeile, Spalte).value
next Zeile
next Spalte
Gruss WS


Bild


Betrifft: sicher dass des so geht? ;) von: c0bRa
Geschrieben am: 24.03.2005 08:11:26

hallo...

for Zeile=1 to 5
for Spalte=1 to x 'x der Wert der maximal vorhanden ist
cells(Spalte,Zeile).value= cells(Zeile, Spalte).value
next Spalte
next Zeile


würd ich mal eher sagen ;)

sosnt isser bei zeile 5 bevor er überhaupt in spalte 2 wechselt :)

vielleicht hilft dir der worksheets-befehl usedrange.columns.count() weiter beim definieren von X


Rückmeldung nicht vergessen...
c0bRa


Bild


Betrifft: AW: sicher dass des so geht? ;) von: Jochen
Geschrieben am: 24.03.2005 11:01:18

Hallo,

dass das mit zwei Scgleifen geht weiß ich, das sollte aus meiner Frage ersichtlich sein.
mMir gehts, falls möglich, um eine Alternative,

Grüße Jochen


Bild


Betrifft: AW: sicher dass des so geht? ;) von: c0bRa
Geschrieben am: 24.03.2005 11:05:45

hallo...

naja... du kannst jede der 5 zellen von spalte 5-65535 einzeln ansprechen... allerdings wird dir der VBA editor dann irgendwann sagen, dass dein sub zu groß zum ausführen ist...

was ist an schleifen so schlimm, dass man nach ner alternative sucht?


Rückmeldung nicht vergessen...
c0bRa


Bild


Betrifft: AW: sicher dass des so geht? ;) von: Jochen
Geschrieben am: 24.03.2005 12:47:16

hallo,

es geht nicht um Zellen, das wäre viel zu langsam. Ich muss Zahlen aus einer
Textdatei in ein Array splitten, sortieren und anschließend wieder in ein Textdatei
speichern. Da das u.U. mehr als 1 Mio Zeilen sein können kommt nur Array infrage.

Grüße Jochen


Bild


Betrifft: AW: sicher dass des so geht? ;) von: c0bRa
Geschrieben am: 24.03.2005 12:59:29

also wenns mehr wie 65335 zeilen sind kriegste mit excel sowieso ein problem...

da ist excel dann das falsche programm...

c0bRa


Bild


Betrifft: AW: sicher dass des so geht? ;) von: Jochen
Geschrieben am: 24.03.2005 22:32:56

Hallo,

von Zellen ist doch gar keine Rede. Ich will ein Array umschaufeln, ohne Zellen
zu benutzen.

Grüße Jochen


Bild


Betrifft: AW: sicher dass des so geht? ;) von: Cardexperte
Geschrieben am: 25.03.2005 07:59:20

Hello Jochen, also ich hab das ausprobiert und es geht mit diesem Code, die Tabelle wird in Tabelle2 transponiert eingetragen:

Sub transp()
Dim wert(1 To 100, 1 To 100)
x = 13
For i = 1 To x
For j = 1 To x
wert(i, j) = Cells(i, j).Value
Next j
Next i
For i = 1 To 13
For j = 1 To 13
Sheets("Tabelle2").Cells(i, j).Value = wert(j, i)
Next j
Next i
End Sub

also hier ist es mit Zellen gemacht, wenn du das Array aus einer Textdatei erstellen willst warum nicht, brauchst doch nur die Textdatei dort wo wert(i,j)= steht ersetzen durch open usw und die Werte aus der Textdatei in das Array einlesen, dazu muss man aber wissen, wie die Textdatei aufgebaut ist, die vorgehensweise bleibt immer die Gleiche!!!!
Gruss WS


Bild


Betrifft: AW: sicher dass des so geht? ;) von: Jochen
Geschrieben am: 25.03.2005 11:40:50

Hallo,

danke, dass das so geht weiß ich. Ich hatte gehofft, dass es eine andere Lösung
gibt, da das über eine Mio Sätze sein können. Scheinbar gibt es keine andere Lösung.

Grüße Jochen


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Auswertung"