Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1284to1288
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

Dreidimensionales Array auslesen

Dreidimensionales Array auslesen
06.11.2012 17:04:27
Tobias
Hallo!
Ich weiss, man findet über google was dazu, aber irgendwie verstehe ich es nicht.
Ich habe 10 Abteilungen, die je 8 Produkte herstellen für die es je 6 Kennziffern gibt.
Die Abteilungesnamen hatte ich vorher in einem eindimensionalen Array gespeichert.
Was ich gemacht habe:
for k = LBound(Abteilungsname) to UBound(Abteilungsname)
for x = 1 to Produktanzahl
for y = 1 to Kennziffern
B(k,x,y) = cells(y,x).value
next y
next x
next k
Jetzt suche ich eine Möglichkeit die Werte wieder auszulesen. Erst den Werteblock für Abteilung1 in ein Sheet, darunter den Block für Abteilung2 usw.
Wäre sehr nett, wenn mir da jemand helfen könnte.
VG
Tobi!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dreidimensionales Array auslesen
06.11.2012 17:16:49
Ulf
Hallo,
setz doch y,x,k wieder auf Werte
oder auch nur
msgbox B(1,1,1)
Ulf

Das ist nicht so einfach, weil man einen Index ...
06.11.2012 22:05:43
Luc:-?
…nicht einfach weglassen kann, Tobi;
du müsstest also zum Auslesen den gleichen Aufwand treiben wie zum Bilden des Datenfeldes (DataArray). Du hättest eine andere Art von Datenfeld bilden sollen, nämlich einen Vektor aus Matrizen, also etwa so…
Dim avErg, xk As Variant
Redim avErg(UBound(Abteilungsname) - LBound(Abteilungsname))
For Each xk In Abteilungsname
For x = 1 To Produktanzahl
For y = 1 To Kennziffern
B(x, y) = Cells(y, x)
Next y
Next x
avErg(k) = B: k = k + 1
Next xk
Natürlich könnte man die x/y-Schleifen auch noch auf For Each umstellen oder das Ganze ggf noch etwas einfacher (und schneller) gestalten, aber so tief wollte ich mich da jetzt nicht hineindenken, zumal du ja offensichtlich auch transformierst, was man wohl auch mit WorksheetFunction.Transpose machen könnte. Ansonsten gibt's bei For Each auch Unterschiede in der Abarbeitungsreihenfolge von Zellbereichen und Datenfeldern.
Wichtig ist hier erst mal nur der Unterschied zwischen beiden DFeldTypen. Bei diesem hier muss ein einzelnes Element mit (k)(x, y) angesprochen wdn. Dadurch kannst du den Index k von den anderen isolieren → mit avErg(k) erhältst du also eine ganze Matrix, die du wie gewünscht in das TabBlatt übertragen kannst.
Gruß Luc :-?

Anzeige
AW: Das ist nicht so einfach, weil man einen Index ...
07.11.2012 09:32:40
Tobias
Super, danke dir Luc!
du bist eine große Hilfe!!
VG
Tobi!

Bitte sehr, gern geschehen! Gruß owT
07.11.2012 16:10:28
Luc:-?
:-?

AW: Dreidimensionales Array auslesen
07.11.2012 12:46:07
Tobias
Eine nicht ganz so elegante Lösung, aber auch möglich in meinem Fall war:
.Cells(x + 10 * k, y + 1) = B(k, x, y)
Man muss danach aber noch in dem Datenblatt ein paar leere Zeilen löschen.
beste,
Tobi!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige