Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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 in Tabelle schreiben ... neues Problem :-(

Array in Tabelle schreiben ... neues Problem :-(
19.09.2018 10:21:36
Peter
Hallo zusammen,
gestern habt Ihr mir hier toll bei meiner Herausforderung zum Thema "Ein Array mit einem Schwung in eine Tabelle schreiben" geholfen.
Und grundsätzlich funktioniert das auch wunderbar.
Halt nur grundsätzlich :-(
Ich habe ein Array mit ca. 100.000 Elementen.
Das Schreiben in die Tabelle klappt ohne Fehler - leider werden nur die ersten ca. 40.000 Zellen mit den im Array enthaltenen Werten gefüllt, der Rest (gut 60.000 Zellen) hat immer den Wert #NV.
Wie gesagt - über das Lokalfenster kann ich sehen, dass alle 100.000 Einträge richtig mit Zahlen gefüllt sind ...
Habt Ihr nochmal eine Idee?
Danke für's Grübeln und viele Grüße
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Array in Tabelle schreiben ... neues Problem :-(
19.09.2018 10:26:10
Rudi
Hallo,
meine Glaskugel ist kaputt.
Code?
Gruß
Rudi
AW: Array in Tabelle schreiben ... neues Problem :-(
19.09.2018 10:31:14
Peter
Hi Rudi,
hier der Code:

Sub konvertiereStundenZu5Minuten()
'   Deklarationen
Dim lngLoop                         As Long
Dim lngLoop2                        As Long
Dim varaStundenwerte()              As Variant
Dim vara5Minutenwerte(105120)       As Variant
Dim lngCounter                      As Long
'   Zielbereich leeren
wks5Minutengang.Range("L13:L1048576").ClearContents
'   Werte aus der Tabelle lesen
varaStundenwerte = wksStundengang.Range("O15:O8774").Value
'   Werte verarbeiten (ver-12-fachen)
lngCounter = 0
For lngLoop = LBound(varaStundenwerte) To UBound(varaStundenwerte)
For lngLoop2 = 1 To 12
lngCounter = lngCounter + 1
vara5Minutenwerte(lngCounter) = varaStundenwerte(lngLoop, 1)
Next lngLoop2
Next lngLoop
'   Werte in Tabelle schreiben
wks5Minutengang.Range("L13:L105132") = Application.Transpose(vara5Minutenwerte)
End Sub
Bei 39000 Datensätzen läuft er richtig, bei den hier eingestellten gut 100.000 Datensätzen sind dann die letzten ca. 60.000 Zellen mit #NV gefüllt.
Danke für Deine Zeit
Gruß
Peter
Anzeige
AW: Array in Tabelle schreiben ... neues Problem :-(
19.09.2018 10:46:09
Daniel
Hi
Wenn ich dich erinnern darf, gestern schrieb dir Rudi folgende Zusatzinformation zur Funktion Transpose:
Geht aber nur bis ca. 65.000 Datensätze.
Dh wenn du ein eindimensionalen Array in das Tabellenblatt zurückschreiben willst, musst du das Transpose selber programmieren.
Dh du erstellt ein gleich grosses 2-d-Array und überträgst dann per Schleife die Daten vom 1-d ins 2-d-Array, und schreibst dann das 2-d-Array zurück.
Ist kein Problem, die Schleife ist schnell, sogar schneller als die Transpose-Funktion.
Die Alternative wäre, dass du das Array gleich als 2-d-Array anlegst.
Dim vara5Minutenwerte(105120, 1)
Dann brauchst du nicht mehr transponieren, musst halt aber immer das ",1" im Index mit angeben.
Gruß Daniel
Anzeige
AW: Array in Tabelle schreiben ... neues Problem :-(
19.09.2018 10:50:13
Peter
Oh shit,
hab' ich gestern zwar gelesen ... aber inhaltlich wohl erfolgreich ignoriert :-)
Sorry dafür.
Werde es entsprechend umbauen.
Danke Daniel und Rudi
und viele Grüße
Peter
AW: Array in Tabelle schreiben ... neues Problem :-(
19.09.2018 10:51:26
Rudi
Hallo,
schreib doch gleich in ein 2-Dim Array.
Sub konvertiereStundenZu5Minuten()
'   Deklarationen
Dim lngLoop                         As Long
Dim lngLoop2                        As Long
Dim varaStundenwerte()              As Variant
Dim vara5Minutenwerte()       As Variant
Dim lngCounter                      As Long
'   Zielbereich leeren
wks5Minutengang.Range("L13:L1048576").ClearContents
'   Werte aus der Tabelle lesen
varaStundenwerte = wksStundengang.Range("O15:O8774").Value
ReDim vara5Minutenwerte(1 To UBound(varaStundenwerte) * 12, 1 To 1)
'   Werte verarbeiten (ver-12-fachen)
lngCounter = 0
For lngLoop = LBound(varaStundenwerte) To UBound(varaStundenwerte)
For lngLoop2 = 1 To 12
lngCounter = lngCounter + 1
vara5Minutenwerte(lngCounter, 1) = varaStundenwerte(lngLoop, 1)
Next lngLoop2
Next lngLoop
'   Werte in Tabelle schreiben
wks5Minutengang.Range("L13").Resize(UBound(vara5Minutenwerte)) = vara5Minutenwerte
End Sub

Gruß
Rudi
Anzeige
AW: Array in Tabelle schreiben ... neues Problem :-(
19.09.2018 11:13:44
Peter
Hallo Rudi,
vielen Dank nochmal - hab's jetzt genauso umgesetzt.
Gruß
Peter

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige