Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
....
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Eindimensionales Array aus einer Spalte erstellen


Schritt-für-Schritt-Anleitung

Um ein eindimensionales Array aus einer Spalte in Excel VBA zu erstellen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (drücke ALT + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf ein beliebiges Element im Projektfenster > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub Array_Eindimensional()
    Dim vInhalt As Variant
    Dim rBereich As Range
    Set rBereich = Range("B3:B20") ' Der Bereich, der in das Array geschrieben wird
    vInhalt = Application.WorksheetFunction.Transpose(rBereich.Value) ' Füllt das eindimensionale Array
    ' Hier kannst du mit vInhalt arbeiten.
    ' Optional: Rückführen in einen anderen Bereich
    rBereich.Offset(0, 2).Value = Application.WorksheetFunction.Transpose(vInhalt)
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Das oben beschriebene Vorgehen zeigt, wie du ein eindimensionales Array in Excel VBA erstellen kannst, indem du die Werte aus einem definierten Bereich (in diesem Fall B3:B20) überträgst.


Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich"

    • Dieser Fehler kann auftreten, wenn der angegebene Bereich leer ist oder nicht die richtigen Datentypen enthält. Stelle sicher, dass der Bereich Werte enthält.
  • Fehler: Array ist nicht korrekt dimensioniert

    • Überprüfe, ob du den Bereich richtig definiert hast. Der Bereich muss eine Spalte oder eine Zeile umfassen, um als eindimensionales Array behandelt werden zu können.
  • Lösung bei horizontalem Bereich:

    • Wenn du einen horizontalen Bereich (z. B. A1:Z1) verwendest, musst du das Array zwei Mal transponieren, um es in ein eindimensionales Array zu konvertieren.

Alternative Methoden

Eine alternative Methode zur Erstellung eines eindimensionalen Arrays besteht darin, die Werte manuell in das Array zu schreiben. Beispielsweise:

Dim myArray(1 To 10) As Variant
Dim i As Integer

For i = 1 To 10
    myArray(i) = Cells(i + 2, 2).Value ' Werte aus Spalte B in das Array schreiben
Next i

Diese Methode kann nützlich sein, wenn du die Werte direkt aus Zellen in ein vba-Array schreiben möchtest.


Praktische Beispiele

Hier ist ein weiteres Beispiel, das zeigt, wie du ein eindimensionales Array mit Werten füllst und diese in eine andere Zelle zurückschreibst:

Sub Beispiel_Array_Befuellen()
    Dim myArray() As Variant
    Dim i As Integer

    ' Größe des Arrays dynamisch anpassen
    ReDim myArray(1 To 5)

    ' Array mit Werten befüllen
    For i = 1 To 5
        myArray(i) = "Wert " & i
    Next i

    ' Werte in Spalte D schreiben
    Range("D1:D5").Value = Application.Transpose(myArray)
End Sub

In diesem Beispiel wird ein eindimensionales Array erstellt und die Werte werden in die Zellen D1 bis D5 geschrieben.


Tipps für Profis

  • Wenn du ein eindimensionales Array füllst, achte darauf, den richtigen Datentyp zu verwenden, um eine optimale Leistung zu gewährleisten.
  • Nutze die Application.Transpose-Funktion, um den Umgang mit Vektoren zu erleichtern.
  • Bei der Arbeit mit großen Datenmengen kann es effizienter sein, ein zwei-dimensionales Array zu verwenden, um die Performance zu steigern.

FAQ: Häufige Fragen

1. Wie kann ich ein eindimensionales Array füllen?
Du kannst ein eindimensionales Array in Excel VBA füllen, indem du die Werte aus einem Range über die Transpose-Funktion überträgst oder sie manuell in einer Schleife zuweist.

2. Was ist der Unterschied zwischen einem eindimensionalen und einem zweidimensionalen Array?
Ein eindimensionales Array hat nur eine Dimension (z. B. eine Liste von Werten), während ein zweidimensionales Array mehrere Dimensionen hat (z. B. eine Tabelle mit Zeilen und Spalten).

3. Wie kann ich ein vba-array definieren und füllen?
Ein vba-array kann mit Dim und ReDim deklariert und anschließend mit einer Schleife oder direkt aus einem Range befüllt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige