Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrdimensionales Array oder DictionaryObject

Mehrdimensionales Array oder DictionaryObject
Marlon
Hallo
ich bräuchte mal ein wenig Hilfe bei der Erstellung eines Arrays für eine Tabelle, die
500000Zeilen lang und 20 Spalten breit ist.
Der Vorgang ist ganz einfach: Es sollen Zahlen aus der Spalte A (Höchster Wert ist 20) - in 20 Spalten geschoben werden. Also den Spalten zugeordnet. Für Zahl 7 in Spalte A wird in Spalte 8 (H) eine 1 notiert.
Bei Zahl 15 in Salte A wird in Spalte P (16) eine 1 notiert. Unter jeder 1 soll eine 2 eingefügt werden.
Das Problem sind die 500000 Zahlen. Das dauert Tage. Nepumuk hat mir vor Tagen einige Grundlagen mit
Arrays gezeigt und nun hoffe ich dass mir jemand weiter zeigen kann, wie ich in diesem Fall ein 2 dimensionales Array anlege und diese Berechnungen machen kann. Oder muß ich das besser mit einem DictionaryObject machen?
Ein Bild:
Userbild
Die Excel-Datei:
https://www.herber.de/bbs/user/76991.xls
Danke,
Marlon

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Mehrdimensionales Array oder DictionaryObject
13.10.2011 18:52:09
Gerd
Hallo Marlon!

Sub test()
Dim arr() As Variant, vntA As Variant, lngIndex As Long
Cells(2, 2).Resize(Cells(Rows.Count, 1).End(xlUp).Row).Resize(, 20).Clear
'Zufallszahlenformeln in feste Werte umwandeln
With Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1)
.Value = .Value
End With
vntA = Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).Value2
ReDim arr(1 To UBound(vntA) + 1, 2 To 21)
For lngIndex = LBound(vntA) To UBound(vntA)
arr(lngIndex, vntA(lngIndex, 1) + 1) = 1
arr(lngIndex + 1, vntA(lngIndex, 1) + 1) = 2
Next
Cells(2, 2).Resize(UBound(arr), UBound(arr, 2) - 1) = arr
End Sub

Gruß Gerd
Anzeige
AW: Mehrdimensionales Array oder DictionaryObject
13.10.2011 19:10:24
Marlon
Vielen Dank, Gerd.
Ich liebe Arrays.
Marlon
AW: Mehrdimensionales Array oder DictionaryObject
13.10.2011 18:57:24
Tino
Hallo,
kannst mal testen.
1. Allerdings weiß ich nicht ob dies Dein speicher mit macht bei dieser Datenmenge.
2. Verstehe das mit der Zufallszahl nicht,
dadurch stimmen die Daten nach dem Makro nicht mehr weil diese ja neu berechnet werden.
3. müsstest Du die Datei als xlsm speichern xls hat keine 500000 Zeilen.

Sub Test()
Dim ArrayWerte(), ArrayAusgabe(), n&
With Tabelle2
    ArrayWerte = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Value2
    Redim ArrayAusgabe(1 To Ubound(ArrayWerte) + 1, 1 To 20)
    For n = 1 To Ubound(ArrayWerte)
        ArrayAusgabe(n, ArrayWerte(n, 1)) = 1
        ArrayAusgabe(n + 1, ArrayWerte(n, 1)) = 2
    Next n
    .Range("B2").Resize(Ubound(ArrayAusgabe), Ubound(ArrayAusgabe, 2)) = ArrayAusgabe
End With
End Sub
Gruß Tino
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige