Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

[VBA] Dreidimensionales Array in Tabellen ausgeben

[VBA] Dreidimensionales Array in Tabellen ausgeben
Thomas
Hallo,
ich habe ein Problem mit der Ausgabe eines Arrays in eine Excel-Tabelle.
Ausgangspunkt ist folgender:

With ThisWorkbook.Worksheets(1)
.Cells(4, l).Resize(UBound(array, 1), UBound(array, 2)).Value = array    End With

Das Array 'array' ist hierin zweidimensional, l wird durchlaufen von 1 bis 14, in 3er Schritten. Ausgegeben werden 5 mal 2er Wertepaare nebeneinander in einer Excel-Tabelle.
Also so:
0,000 -0,171 $ 0,000 -0,159 $ hier nochmal weitere drei Wertepaare
0,000 -0,170 $ 0,000 -0,159 $ ...
0,000 -0,170 $ 0,000 -0,159 $
0,000 -0,169 $ 0,000 -0,159 $
0,001 -0,167 $ 0,003 -0,157 $
0,007 -0,161 $ 0,013 -0,153 $
0,021 -0,156 $ 0,030 -0,147 $
und noch einige Werte so weiter
Nun soll das Array aber dreidimensional werden. Es sollen also mehrere "Tabellen" in dem Array gespeichert werden, nicht nur eine, wie in dem zweidimensionalen.
z.B.
Von
array(401, 2) zu
array(1, 401, 2) array(2, 308, 2) Z.B. zwei Tabellen. Dann würde oben genanntes Zahlenbeispiel die erste "Tabelle" in dem Array sein (array(1, 401, 2), ich jedoch in einem neuen sheet eine zweite "Tabelle", mit anderen Wertepaaren (array(2, 308, 2), auch noch ausgeben wollen.
Deshalb meine Frage: wie muss ich den obigen Code erweitern/ändern, damit ich eben kein zweidimensionales Array habe, sondern ein dreidimensionales, welches ich dann in unterschiedlichen sheets ausgeben kann?
Das Ganze ist jetzt vielleicht ein wenig unverständlich formuliert, aber anders kann ich's nicht erklären.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: [VBA] Dreidimensionales Array in Tabellen ausgeben
06.10.2009 10:25:00
JogyB
Hi.
Als Ansatz: Kopier das mit einer Schleife in ein zweidimensionales Array und dann in die Tabelle.
Oder benutz eine Collection von zweidimensionalen Arrays anstelle des dreidimensionalen Arrays.
Wenn Du weitere Hilfe brauchst, dann melde Dich nochmal.
Gruss, Jogy
AW: [VBA] Dreidimensionales Array in Tabellen ausgeben
06.10.2009 10:46:26
Thomas
Hallo Jogy,
erstmal Danke für die Ansätze.
Nur fehlt mir dafür leider, im Moment, der programmiertechnische Ansatz.
Wenn du deine Vorschläge anhand eines kurzen Beispiel's erläutern könntest, wäre ich dir dankbar.
AW: [VBA] Dreidimensionales Array in Tabellen ausgeben
06.10.2009 11:20:59
JogyB
Hi.
Hier mal ein paar Beispiele, die oberen beiden sind für den Ansatz mit dem Kopieren, das untere zeigt die Collection. Letztere finde ich besser, da Du dann die einzelnen Arrays beliebig dimensionieren kannst.
' Liest ein Element eines 3-dimensionalen Arrays in einen 2-Dimensionalen aus
' TabNr gibt die Tabellennummer an, also das erste Element
' mit den Variablen oGrenze1 und oGrenze2, kannst Du die Obergrenzen einschränken
' 1 und 2 bezieht sich auf die Dimensionen des Zielarrays
Function copy3DimTo2Dim(quellArr() As Variant, ByVal tabNr As Long, _
Optional ByVal oGrenze1 As Long, Optional ByVal oGrenze2 As Long) As Variant
Dim zielArr
Dim i As Long
Dim k As Long
' Obergrenzen aus Array, falls nicht angegeben
If oGrenze1 = 0 Then oGrenze1 = UBound(quellArr, 2)
If oGrenze2 = 0 Then oGrenze2 = UBound(quellArr, 3)
ReDim zielArr(LBound(quellArr, 2) To oGrenze1, LBound(quellArr, 3) To oGrenze2)
For i = LBound(quellArr, 2) To oGrenze1
For k = LBound(quellArr, 3) To oGrenze2
zielArr(i, k) = quellArr(tabNr, i, k)
Next
Next
copy3DimTo2Dim = zielArr
End Function
' Anwendungsbeispiel für copy3DimTo2Dim
Sub testCopy()
Dim i As Long
Dim j As Long
Dim k As Long
Dim myArr(1 To 5, 1 To 5, 1 To 5)
Dim tempArr
For i = 1 To 5
For j = 1 To 5
For k = 1 To 5
myArr(i, j, k) = i & j & k
Next
Next
Next
' Liest das 5. Element aus, die Zahl kannst Du anpassen
tempArr = copy3DimTo2Dim(myArr, 5)
' Zielsheet leeren, sonst überschneidet sich vielleicht was
ActiveSheet.Cells.ClearContents
' Werte in zielsheet schreiben
ActiveSheet.Cells(1, 1).Resize(UBound(tempArr, 1), UBound(tempArr, 2)).Value = tempArr
End Sub
' Hier das ganze mit Collection
Sub testCollection()
Dim myCol As New Collection
Dim i As Long
Dim j As Long
Dim k As Long
Dim myArr()
Dim tempArr
For i = 1 To 5
' Hier kannst Du jeden Array beliebig dimensionieren
ReDim myArr(1 To i + 1, 1 To 10 - i)
For j = 1 To i + 1
For k = 1 To 10 - i
myArr(j, k) = i & j & k
Next
Next
' Fügt das in die Collection ein
myCol.Add myArr
Next
' Liest das 2. Element aus, die Zahl kannst Du anpassen
tempArr = myCol.Item(2)
' Zielsheet leeren, sonst überschneidet sich vielleicht was
ActiveSheet.Cells.ClearContents
' Werte in zielsheet schreiben
ActiveSheet.Cells(1, 1).Resize(UBound(tempArr, 1), UBound(tempArr, 2)).Value = tempArr
End Sub
Gruss, Jogy
Anzeige
AW: [VBA] Dreidimensionales Array in Tabellen ausgeben
07.10.2009 16:01:33
Thomas
Vielen Dank, hat wunderbar funktioniert!

321 Forumthreads zu ähnlichen Themen


Schönen Gruß in mein Lieblings-Forum,
ich lese sequentiell aus einer riesigen csv-Datei die ersten 50.000 Sätze in ein Array. Nach dem Einlesen möchte ich die Werte in ein sheet schreiben.
Dim HilfsArray(1 To 50000) As String
Dim i as long
Open Input_File For Input As #1
D...
Anzeige

Hallo,
Opa Helmut auf dem Fahrrad:
For i = 1 To UBound(arr)
Cells(1, i) = arr(i)
Next 'i
Raumschiff Enterprise
Range(Cells(1, 1), Cells(1, UBound(arr))) = arr
Ich favorisiere die Methode Raumschiff Enterprise, aber wenn ein arr Speicherplatz mit 1000 Zeichen belegt...

Guten Morgen liebes Forum,
heute steht mal wieder das unleidige Thema Array an meiner Tagesordnung.
Stück für Stück nähere ich mich an. In diesem Fall schleife ich durch einen Rangebereich.
Hierbei prüfe ich ob der Zellwert unter dem aktuellen unterschiedlich ist oder nicht.
Sin...
Anzeige

Hallo Leute,
ich möchte für den Brötchenverkauf in der Schule eine Statistik erstelle.
Jeden Tag soll , bei klicken des Bottons, aus der Excel Tabelle, die Anzahl, die Produktnummer, der Preis und die Kategorie in die Tabelle "Daten" geschrieben werden.
Mit folgendem Makro ist es...

Hallo alle zusammen,
ich beschäftige mich seit ein paar Tagen mit VBA. Ich habe momentan eine Arbeitsmappe die ich dafür gebrauche um eine Liste auszulesen und bestimmte daten dann immer wieder neu erstellten Worksheets zuzuweisen.
als erstes habe ich es ganz statisch nur mit einem work...
Hallo ans Forum,
weiss jemand, ob es möglich ist, Teil eines Arrays in einen Range zu schreiben? Der Teil des Arrays ist dabei nicht in der oberen linke Ecke angesiedelt...
Man stelle sich ein Array von 5x5 vor. Kann ich auf irgendeine Weise so auf das Array zugreifen, dass ich das "innere...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige