Array splitten
07.06.2016 12:53:55
Gaurav
ich habe einen Code geschrieben, indem ein zweidimensionales Array vorkommt, das bis zu 8 Millionen Zeilen (und sieben Spalten) hat. Wenn ich dieses Array in ein Sheet schreiben lasse (B-> Sheets("Table1").Range("A1.G" & [Zeilenmaximum des arr()]) = arr() ) dann werde ich sicher eine Fehlermeldung bekommen, da im Sheet nur etwas mehr als 1 Million Zeilen passen.
Gibt es eine Möglichkeit ohne for-Schleife das Array in beispielsweise acht Teile zu splitten und die Teile auf einmal auszugeben (um die Rechenzeit zu verkürzen)?
Folgendes habe schon implementiert:
Sub blabla()
' Deklarationen der Variablen:
dim arr(1 to 8000000, 1 to 7) as long
dim s, counter as long
s = 1
counter = 0
' Einige bestimmte Zeilen, die arr() auf bestimmte Weise mit Zahlen befüllt
' Jetzt das eigentliche Problem:
for i = 1 to 8000000
counter = counter + 1
Sheets("Table1").Range(counter, s).Value = arr(i, 1)
Sheets("Table1").Range(counter, s+1).Value = arr(i, 2)
Sheets("Table1").Range(counter, s+2).Value = arr(i, 3)
Sheets("Table1").Range(counter, s+3).Value = arr(i, 4)
Sheets("Table1").Range(counter, s+4).Value = arr(i, 5)
Sheets("Table1").Range(counter, s+5).Value = arr(i, 6)
Sheets("Table1").Range(counter, s+6).Value = arr(i, 7)
if counter = 1000000 then
counter = 0
s = s + 10
end if
next i
End Sub
Suche etwas einfacheres, da bei meiner jetzigen Methode bis zu 56 Millionen Zellen nacheinander beschrieben werden, was sicher viel Zeit benötigen wird.sowas wie:
Sheets("Table1").Range("A1:G1000000").Value = arr(Zeile 1 bis 1000000, spalte 1 bis 7)
Sheets("Table1").Range("I1:O1000000").Value = arr(Zeile 1000001 bis 2000000, spalte 1 bis 7)
usw.
Danke schon Mal im Vorraus.