Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
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

2dim Array umwandeln in 1dim Array

2dim Array umwandeln in 1dim Array
27.10.2020 21:00:02
HannesStein
Hallo
wie macht man aus einem zweidimensionalen einspaltigen Array ein eindimensionales Array?
Oder anders gefragt: Wie macht man aus b ein Array, das so aussieht wie a?
Sub Test()
Dim a, b
a = Array(Range("A1").Value, Range("A2").Value, Range("A3").Value, Range("A4").Value)
b = Range("A1:A4")
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: 2dim Array umwandeln in 1dim Array
27.10.2020 21:14:23
Luschi
Hallo Hannes,
zB. so: b = WorksheetFunction.Transpose(Range("A1:A4"))
mit dem Unterschied, daß der Index bei B
'b' mit 1 beginnt.
Gruß von Luschi
aus klein-Paris
Array-Unterschiede
27.10.2020 21:57:35
Luc:?
Hallo, Hannes;
a entspricht einem 1dim VBA-Standard-Array, das horizontal (an 1er Zeile) orientiert ist und auch als Kovektor bezeichnet wird, während b in Xl und VBA eher eine 1spaltige Matrix darstellt und deshalb 2dimensional ist, obwohl es nur vertikal orientiert ist und es sich eigentlich um einen Vektor handelt. Dass µS das so herum gemacht hat, liegt an der ListenOrientierung von Xl, in der Mathematik ist das Primäre nämlich der Vektor und nicht der Kovektor, der hier einem Tensor(0,1) entspricht.
Man kann aber auch einen quasi 1dim Vektor [Tensor(1,0)] bilden, was aber eine andere Art von Array erfordert und damit ebenfalls einen 2.Index, der in diesem Fall bei der Auswahl aber vernachlässigt wdn kann, da er ein 2.Array anspricht, das aber nur aus je einem Element besteht:
Dim i As Long, b(3)
For Each Zelle In Range("A1:A4")
b(i) = Array(Zelle): i = i + 1
Next Zelle
Dadurch bleibt die Ausrichtung des Arrays erhalten. Die einzelnen Werte können dann mit b(0) bis b(3) angesprochen wdn, wobei zu beachten ist, dass dann kein Skalar (Einzelwert), sondern ein skalarer Tensor(0,0) zurückgegeben wird, also ein Array mit nur einem Wert. Wollte man den nackten Wert erhalten, müsste man b(0)(0) bis b(3)(0) verwenden. Aber Xl kennt das, liefern doch bspw die Xl-Fktt ZEILE und SPALTE auch so etwas.
Spielt die Ausrichtung dagg keine Rolle, käme neben Luschis Ansatz auch noch die vbFkt Join infrage, nur verbindet die keine Werte in Matrizen und ein Range liefert primär immer eine Matrix, die im KovektorFall von VBA nur umgewandelt wird, wenn es sich um ein Datenfeld handelt. Das erledigt aber die auf Join basierende UDF VJoin und ggf in neueren Xl-Versionen auch TEXTVERKETTEN (TextJoin).
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Anzeige
AW: online-excel.de/excel/singsel_vba.php?f=47
28.10.2020 15:28:37
HannesStein
OK, habe WorksheetFunction.Transpose schon öfters gesehen, jetzt hat es auch Bedeutung gewonnen.
Vielen Dank.
Hannes

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige