Bestimmte Spalte eines Arrays in Excel VBA auslesen
Schritt-für-Schritt-Anleitung
Um eine bestimmte Spalte eines Arrays in Excel VBA auszulesen und in ein Tabellenblatt einzufügen, kannst Du folgende Schritte befolgen:
-
Array erstellen: Zuerst musst Du ein 2-dimensionales Array erstellen. Zum Beispiel:
Dim VarDatErg(1 To 20000, 1 To 8) As Variant
Hier werden 20.000 Zeilen und 8 Spalten definiert.
-
Daten in das Array einfügen: Fülle das Array mit den gewünschten Werten.
-
Bestimmte Spalte auslesen: Um eine bestimmte Spalte, z.B. die erste Spalte, auszulesen, kannst Du den folgenden Code verwenden:
With tbl_Erg
.Range(.Cells(1, 1), .Cells(UBound(VarDatErg, 1), 1)) = Application.Index(VarDatErg, 0, 1)
End With
Hierbei wird 0
im zweiten Parameter verwendet, um alle Zeilen einzuschließen, und 1
im dritten Parameter, um die erste Spalte auszuwählen.
Häufige Fehler und Lösungen
-
Fehler: Nur der Wert von ar(1) wird kopiert
Lösung: Stelle sicher, dass Du ein 2-dimensionales Array verwendest und die Indizes korrekt gesetzt sind. Der Code sollte entsprechend der Dimension des Arrays angepasst werden.
-
Fehler: Index außerhalb des Bereichs
Lösung: Überprüfe die Grenzen Deines Arrays mit UBound
, um sicherzustellen, dass Du innerhalb der erlaubten Indizes arbeitest.
Alternative Methoden
Eine andere Methode, um eine bestimmte Spalte auszulesen, ist die Verwendung einer Hilfstabelle. Du kannst die Werte zuerst in eine Hilfstabelle kopieren und dann von dort aus in das endgültige Ziel übertragen. Dies kann die Performance verbessern, besonders bei großen Datenmengen.
Ein Beispiel für den Code könnte so aussehen:
Dim tempArray() As Variant
ReDim tempArray(1 To UBound(VarDatErg, 1))
For i = 1 To UBound(VarDatErg, 1)
tempArray(i) = VarDatErg(i, 1) ' z.B. die erste Spalte
Next i
tbl_Erg.Range("A1:A" & UBound(tempArray)) = Application.Transpose(tempArray)
Praktische Beispiele
Hier sind einige praktische Beispiele, wie Du bestimmte Spalten eines Arrays auslesen kannst:
-
Auslesen der zweiten Spalte:
With tbl_Erg
.Range(.Cells(1, 1), .Cells(UBound(VarDatErg, 1), 1)) = Application.Index(VarDatErg, 0, 2)
End With
-
Auslesen mehrerer Spalten:
With tbl_Erg
.Cells(1).Resize(UBound(VarDatErg), 3) = Application.Index(VarDatErg, Evaluate("ROW(1:" & UBound(VarDatErg) & ")"), Array(1, 6, 8))
End With
Tipps für Profis
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass ich die richtige Spalte aus dem Array auslese?
Verwende den Index
-Befehl und achte darauf, die korrekten Parameter zu setzen, um die gewünschte Spalte auszuwählen.
2. Was mache ich, wenn mein Array leer ist?
Überprüfe, ob das Array korrekt initialisiert und mit Daten gefüllt wurde, bevor Du versuchst, eine Spalte auszulesen.