Mehrer 1-spaltige Matrizen zu einer Matrix vereinigen

01/09/2007 - 20:03 von Ingo Albers | Report spam
Hallo zusammen,

ich habe eine Frage zu Datenfeldern, Matrizen und ggf. arrays?

Angenommen, ich lese 3 Vektoren (=1dimensionale Matrix) ein
und verarbeite die Werte. Nun möchte ich diese in einer zusammen-
gefassten Matrix als Datenfeld an das Tabellenblatt zurückschreiben.

Also anstatt
Range("A1:A100")=vek_1
Range("B1:B100")=vek_2
Range("C1:C100")=vek_3

würde ich gern
Range("A1:C100")=Matrix

rausgeben.

Wie bekomme ich meine 3 eindimensionalen Vektoren zu einer Matrix vereinigt?
Die Vektoren sind z.B. so dimensioniert

Dim vek_1( To 100, 1) As Double

Wenn das hier schonmal gezeigt wurde, reicht mir auch ein Verweis dazu.

Vielen Dank & viele Grüße
Ingo
 

Lesen sie die antworten

#1 Alexander Wolff
02/09/2007 - 17:44 | Warnen spam
Eine Feldzuweisungsmöglichkeit zwischen den Begriffen "Zellbereich" und
"VBA-Datenfeld" geht in beide Richtungen auch wie folgt (getestet mit
xl2000). Einmal ohne, dann mit Kommentaren.

-

Sub ZuweisungVonGanzenBereichenOderFeldern()

Dim arr
Dim brr()

arr = Range("A1:A100")

ReDim brr(UBound(arr) - 1, 2)
arr(1, 1) = 1000

For i = 0 To 2
For j = 0 To UBound(arr) - 1
brr(j, i) = i * 100 + j + arr(j + 1, 1)
Next
Next

Range("B1:D100") = brr

End Sub

-

Sub ZuweisungVonGanzenBereichenOderFeldern()

Dim arr 'as Variant (Voreinstellung);
'aber das Variant enthàlt das ganze Array!
Dim brr() 'auch Variant, aber ein Array
'mit Einzeltypen Variant!

' Übertrag in ein VBA-Datenfeld, HIER ALS VEKTOR
' MATRIX ginge auch
arr = Range("A1:A100") '.Value (Voreinstellung)

' wenn gewünscht, arr traditionell mit Schleifen
' und/oder einzelzuweisend bearbeiten
' Indizes des Datenfelds ARR laufen ab Zeile 1, Spalte 1;
' beim Array BRR im Standard ab 0 pro Dimension,
' falls nicht Option Base = 1

ReDim brr(UBound(arr) - 1, 2)
arr(1, 1) = 1000 'ist immer zweidimensional, hier mit Spalten=1!

' irgendwelche unsinnigen Operationen
For i = 0 To 2
For j = 0 To UBound(arr) - 1
brr(j, i) = i * 100 + j + arr(j + 1, 1)
Next
Next

' Rückgabe ans Blatt, HIER ALS MATRIX
' VEKTOR ginge auch
' Achtung: Als brr, nicht als brr()!
Range("B1:D100") = brr
' Range("B1:E120") = brr füllt den größeren Rest mit #NV auf,
' bricht also nicht ab!

End Sub

-

Das Zusammenfügen von mehreren Vektoren a la arr zu einem brr ist damit
allerdings nicht beantwortet.

Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2

Ähnliche fragen