Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Array- Spalte auslesen

Array- Spalte auslesen
18.12.2008 12:31:00
maike
Hello,
ich habe einen Datenbereich (mehrere Spalten) in ein array eingelesen und möchte jetzt eine gewisse Spalte in eine neue Tabelle ausgeben lassen.
Die ganze Spalte sollte ausgegeben werden, kann das mittels eines einfachen Befehls ablaufen, oder muss ich wieder eine For-Schleife bis Ubound basteln?
Sheets("Savety Level").Range("D10").Resize(UBound(category)) = data(HIER SOLL DER BEFEHL STEHEN,2)
Data ist hierbei das Array. Hat jemand eine Idee? For-Schleifen dauern einfach so lange...
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array- Spalte auslesen
18.12.2008 12:39:28
Daniel
Hi
das kommt darauf an.
For-Next-Schleifen sind langsam, wenn sie mit Excel-Objekten arbeiten (dh. mit Range() und Cells()) und schnell, wenn sie mit VBA-Variablen wie Arrays arbeiten.
dh. wenn du aus einem Grösseren Array eine Spalte nach Excel zurückschreiben willst, dann solltest du erst die Daten aus der Spalte in ein 1-Spaltiges Hilfsarray per For-Next-Schleife einlesen und dann dieses nach Excel zurückschreiben, etwa in dem Stil:

Redim Arr2(1 to Ubound(Arr1,1), 1 to 1)
for i = 1 Ubound(Arr1,1)
Arr2(i, 1) = Arr1(i, 5)
next
Sheets("Savety Level").Range("D10").Resize(UBound(Arr1,1), 1) = Arr2


Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Array-Spalte in Excel VBA auslesen und zurückschreiben


Schritt-für-Schritt-Anleitung

  1. Daten in ein Array einlesen: Zuerst musst du sicherstellen, dass deine Daten in ein Array eingelesen sind. Dies kannst du mit Range.Value tun:

    Dim data As Variant
    data = Sheets("DeinBlatt").Range("A1:C100").Value
  2. Hilfsarray für die gewünschte Spalte erstellen: Um eine bestimmte Spalte aus dem Array auszulesen, erstelle ein neues einspaltiges Hilfsarray. Hierbei kannst du eine For-Next-Schleife verwenden, um die Werte zu extrahieren.

    Dim Arr2() As Variant
    ReDim Arr2(1 To UBound(data, 1), 1 To 1)
    Dim i As Long
    For i = 1 To UBound(data, 1)
       Arr2(i, 1) = data(i, 2) ' Hier wird die zweite Spalte ausgewählt
    Next i
  3. Daten zurück in Excel schreiben: Schließlich kannst du das Hilfsarray zurück in die Excel-Tabelle schreiben:

    Sheets("Savety Level").Range("D10").Resize(UBound(Arr2, 1), 1) = Arr2

Mit diesen Schritten hast du erfolgreich eine Spalte aus einem Excel-Datenbereich in ein VBA-Array eingelesen und die gewünschte Spalte in eine andere Tabelle zurückgeschrieben.


Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range": Dieser Fehler tritt auf, wenn du versuchst, auf ein Array-Element zuzugreifen, das nicht existiert. Überprüfe, ob die Indizes korrekt sind und dass dein Array richtig dimensioniert wurde.

  • Lösung: UBound prüfen: Verwende UBound() und LBound(), um die Grenzen deines Arrays korrekt zu überprüfen, bevor du darauf zugreifst.


Alternative Methoden

Wenn du die Verwendung von Schleifen vermeiden möchtest, kannst du auch die Application.Transpose-Methode verwenden, um eine Spalte in ein Array zu transponieren. Dies kann die Performance verbessern, insbesondere bei größeren Datenmengen.

Dim Arr2 As Variant
Arr2 = Application.Transpose(Application.Index(data, 0, 2)) ' 2 für die zweite Spalte
Sheets("Savety Level").Range("D10").Resize(UBound(Arr2), 1) = Arr2

Praktische Beispiele

Nehmen wir an, du hast folgende Daten in einem Arbeitsblatt:

A B C
1 Apfel Rot
2 Banane Gelb
3 Kirsche Rot

Wenn du die zweite Spalte (Obstnamen) in ein neues Blatt schreiben möchtest, kannst du die oben genannten Schritte befolgen, um die Daten in die Zelle D10 einer anderen Tabelle zu schreiben.


Tipps für Profis

  • Optimierung: Reduziere die Anzahl der Interaktionen mit dem Excel-Objektmodell, indem du so viel wie möglich mit Arrays arbeitest. Dies beschleunigt den Code erheblich.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinem Code, um unerwartete Probleme während der Ausführung zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Spalten gleichzeitig auslesen?
Du kannst mehrere Hilfsarrays erstellen oder das gesamte Array in eine 2D-Datenstruktur schreiben, je nachdem, wie du die Daten später verwenden möchtest.

2. Ist die Verwendung von Arrays schneller als direkte Zellzugriffe?
Ja, die Verarbeitung mit Arrays ist in der Regel schneller, da du die Anzahl der direkten Zugriffe auf die Excel-Objekte minimierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige