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

Eindimensionales Array von einer Spalte erzeugen

Eindimensionales Array von einer Spalte erzeugen
07.03.2020 00:35:56
einer
Hallo
Wie kann man aus einem einspalteigen Tabellenbereich ein eindimensionales Array erstellen?
Wie kann man ein eindimensionales Array in eine Tabelle übertragen?
Zum Beispiel: Der Bereich B3:B20 soll in einem eindimensionalen Array abgebildet werden, mit dem die einzelnen Werte mit einer Zahl abgerufen werden können. Bereich(3) sieht nun mal besser aus als Bereich(3,0), wie ich es jetzt machen muss, weil ich aus jedem Range einer Tabelle nur als zweidimensionales Array bekomme, auch wenn es nur eine Spalte oder eine Zeile ist.
LG, Barbara

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eindimensionales Array von einer Spalte erzeugen
07.03.2020 00:49:47
einer
Hallo Barabara,
Sub asd()
Dim Bereich As Variant
Bereich = Application.Transpose(Range("B3:B20").Value)
End Sub
Gruß Uwe
Das kommt darauf an, ...
07.03.2020 04:48:22
Luc:?
…Barbara,
wie die Ausrichtung des Arrays sein soll. Alles, was aus Xl kommt, ist 2dimensional. VBA kennt dagegen 1dimensionale Kovektoren (horizontal, Zeile) und 2dimensionale Vektoren (vertikal, Spalte). Durch Transpose kann zwar ein Vektor in einen Kovektor gewandelt wdn, er ändert dann aber auch die Ausrichtung (beim Rückschreiben aufs TabBlatt). Es sind aber auch 1dimensionale Vektoren möglich, nur mit einem anderen Array-Typ. Bei Anwendung in einer UDF in einer ZellFml würde Xl einen solchen Vektor auch in einen normalen 2dimensionalen Xl-Vektor transformieren, nur nicht beim Schreiben aus einer SubProzedur heraus. Da muss man selbst für die Transformation sorgen.
Ein solcher Vektor ist zu erreichen, indem man jeden einzelnen Wert in ein Array wandelt, daraus wieder ein Array bildet und dieses dann einem Variant übergibt. Der 1.Index bezeichnet dann ein Element (ja ebenfalls ein Array) dieses Arrays, der 2. (ggf kaum benötigte) dann den Wert im Element-Array, also bspw so myArray(0) bzw myArray(0)(0). VBA ordnet ein solches Konstrukt automatisch als Vektor (vertikal) an. Das gilt auch, falls ein Element-Kovektor aus mehr als einem Wert (SekundärElement) besteht. So kann man mehrstufige Tensoren aufbauen, deren Array-Elemente stets 1dimensional sind. Auf ein TabBlatt sichtbar abbildbar sind aber maximal nur die 2stufigen Tensoren.
Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Eindimensionales Array von einer Spalte erzeugen
07.03.2020 10:23:18
einer
Ein zweidimensionales Array ist mM auch leichter zu verstehen.
die erste Zahl für die Position im Array und dahinter der dazugehörige Wert.
z.B. Bereich(10,Meier) würde heißen, dass der Meier an zehnter Stelle in deiner Spalte stehen würde.
AW: Eindimensionales Array von einer Spalte erzeugen
07.03.2020 10:56:39
einer
Mit Eurer Hilfe, insbesodere den Hinweis auf "Transpose", kann ich mein Problem lösen. Ich habe Makros, die mit eindimensionalen Arrays arbeiten, außerdem finde ich es übersichtlicher.
Ich verwende nun folgende Lösung, wo ein Spaltenbereich in ein eindimensionales Array kopiert wird, und dieses dann daneben wieder in die Tabelle gestellt wird.

Sub Array_Eindimensional()
Dim vInhalt     As Variant
Dim rBereich    As Range
Set rBereich = Range("B3:B20")
'Ein eindimensionales Array wird erstellt
vInhalt = Application.WorksheetFunction.Transpose(rBereich.Value)
'Hier kann mit vInhalt gearbeitet werden.
'Rückführen in den Bereich 2 Spalten daneben
rBereich.Offset(0, 2).Value = Application.WorksheetFunction.Transpose(vInhalt)
End Sub
Vielen Dank für Eure Antworte und LG, Barbara
Anzeige
AW: Eindimensionales Array von einer Spalte erzeugen
07.03.2020 13:38:24
einer
Wenn Dein Bereich horizontal ist, z. B. A1:Z1, dann musst Du 2x transponieren.
Viele Grüße,
Bernd P
z. B. A1:Z1, dann musst Du 2x transponieren ...
07.03.2020 13:59:15
Kuwer
Hallo Bernd,
... oder gar nicht. ;-)
Gruß Uwe
Ich bezog mich auf das Zurückschreiben ;-)
08.03.2020 11:00:44
Kuwer
....

15 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige