Erstellen Sie ein Array aus einem bestimmten Bereich in Excel mit VBA
Dieses Tutorial informiert uns über Arrays in VBA und zeigt, wie wir ein Array mit dem angegebenen Bereich in MS Excel mit VBA erstellen können.
Bevor Sie sich dem Hauptthema zuwenden, ist es wichtig, etwas über Arrays in VBA zu lernen. Fangen wir damit an.
Arrays in VBA
Das Array ist eine Sammlung ähnlicher Objekte, auf die wir mit Hilfe eines Index zugreifen können. Es ist ziemlich einfach, ein Array in VBA zu definieren. Wir können zwei Arten von Arrays in VBA deklarieren - statisches Array
und dynamisches Array
.
Ein statisches Array
ist ein Array fester Größe, das nur die Anzahl von Werten speichern kann, die es definiert hat. Sehen Sie sich das folgende Beispiel an, in dem wir ein Array von string
-Datentypen mit der Größe 7
deklarieren:
Dim arr(7) As String
Ein dynamisches Array
hat keine definierte Grösse und wir können es im Programm erweitern. Wir können es mit einer der beiden unten genannten Anweisungen deklarieren:
Dim arr() As String
ODER
Dim arr As Variant
Es ist ziemlich einfach, einem Array in VBA Werte zuzuweisen. Für ein statisches Array
können wir die folgende Anweisung verwenden, um Werte zuzuweisen:
arr (index) = Value
Anfangs wird das dynamische Array
nicht mit Grösse deklariert; Um also einem dynamischen Array
Werte zuzuweisen, deklarieren Sie es mit der Größe neu und weisen Sie dann einen beliebigen Wert zu.
ReDim arr(size)
arr (index) = value
Jetzt wissen wir genug über Arrays in VBA, lernen wir, wie man ein Array mit dem angegebenen Bereich in Microsoft Excel mit VBA erstellt.
Erstellen Sie ein Array mit einem bestimmten Zellbereich
Der oben geschriebene Abschnitt beschreibt, wie ein einfaches Array deklariert wird. Es wird jedoch nicht erwähnt, ein Array zu erstellen, das Werte aus einem bestimmten Zellbereich in Microsoft Excel enthält.
Um ein Array mit den Zellenwerten zuzuweisen, können wir die folgende Code-Anweisung verwenden:
Dim arr As Variant
arr= Range("A1:A10").Value
Das arr
wird als dynamisches Array
deklariert, damit es den ihm zugewiesenen Zellbereich annehmen kann. Die Code-Anweisung wird perfekt ausgeführt, erstellt jedoch ein zweidimensionales Array über den Zellbereich A1:A10
. Wir können es im Bild unten sehen:
Hinweis: Der Array-Index beginnt bei
1
statt0
.
Es kann für Benutzer, insbesondere Anfänger, schwierig sein, mit einem zweidimensionalen Array zu arbeiten.
Daher ist es wichtig, eine Lösung zu finden, die das zweidimensionale Array in ein eindimensionales Array umwandeln kann, da es immer einfacher ist, mit einem eindimensionalen Array zu arbeiten.
Konvertieren Sie das 2D-Array in ein 1D-Array
Beim Konvertieren des zweidimensionalen Arrays in ein eindimensionales Array gibt es zwei Szenarien. Ein Szenario ist, wenn der Zellbereich der einer Spalte ist. Das andere Szenario ist, wenn der Zellbereich der einer Zeile ist.
Spaltenzellenbereich
Wenn Sie die Werte einer Spalte in einem eindimensionalen Array speichern möchten, können Sie die Funktion Application.Transpose()
auf die Funktion Range()
anwenden.
Es wird ein eindimensionales Array zurückgegeben, das die Zellwerte aus dem in der Funktion Range()
erwähnten Spaltenbereich enthält. Dafür können wir den folgenden Codezaun verwenden:
Dim myArr As Variant
myArr = Application.Transpose(Range("A1:A10"))
Bei der Ausführung erzeugen die Codeanweisungen die folgenden Ergebnisse:
Zeilenzellenbereich
Die Funktion Application.Transpose()
muss zweimal auf die Funktion Range()
angewendet werden, wenn Sie die Werte einer Zeile in einem eindimensionalen Array speichern möchten.
Das resultierende Array ist ein eindimensionales Array, das die Zellenwerte aus dem in der Funktion Range()
erwähnten Zeilenbereich enthält. Dazu können wir den folgenden Codeblock verwenden:
Dim myArr As Variant
myArr = Application.Transpose(Application.Transpose(Range("A1:J1")))
Bei der Ausführung erzeugen die Codeanweisungen die folgenden Ergebnisse:
Hinweis: Wir stellen fest, dass das Array in beiden Szenarien mit Index
1
statt mit Index0
beginnt. Die FunktionApplication.Transpose()
verändert die Indizes des Arrays nicht.
Es ist auch wichtig zu beachten, dass die neueren Versionen von Microsoft Excel eine modifizierte Version der Funktion Application.Transpose()
verwenden.
Die Funktion Application.WorksheetFunction.Transpose()
wird in den neueren Versionen von Microsoft Excel als Alternative zur Funktion Application.Transpose()
verwendet.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub