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

Forumthread: Daten in Array einlesen - in Tabelle ausgeben

Daten in Array einlesen - in Tabelle ausgeben
Bob217
Hallo,
bin mal wieder kurz vorm verzweifeln und hoffe ihr könnt mir helfen - bitte
Zum besseren Verständnis meines Problems - eine kleine Beispielmappe...
https://www.herber.de/bbs/user/71248.xls
Eine Excel-Tabelle soll mit Daten gefüllt werden. Die Daten stehen in einer Datenbank (PALO). Für das Einlesen der Daten aus PALO in Excel steht eine Function zur Verfügung, die sich auf bestimmte Koordinaten (in diesem Fall NR und DATUM) bezieht.
Eine bestimmte Zelle mit bestimmten Daten aufgrund bestimmter Koordinaten ist kein Problem. Das schaff ich noch ;-) - und dann setzts bei mir aus...und mein Problem beginnt...
Da sich der zu füllende Bereich über ca. 100 Spalten und ca. 500 Zeilen erstreckt und die jeweiligen Koordinaten für jede darin enthaltene Zelle anders ist (Koordinate1 = Zelle der Spalte 2 in der jeweiligen Zeile der zu füllenden Zelle; Koordinate3 = Zelle der Zeile 4 der jeweiligen Spalte der zu füllenden Zelle).
Nun könnte ich jede zu füllende Zelle einzeln mit den jeweiligen Koordinaten ansprechen, aber bei ca. 50000 Zellen wären das ca. 100000 Koordinaten und ich glaube da verliere ich den Überblick ;-) und würde auch bei der Übergabe der Daten ziemlich lange dauern...
Hab mal einbisschen was von Arrays gehört und das die Methode recht schnell sein muss. Kenn mich aber leider damit überhaupt nicht aus und die Zeit sitzt mir im Nacken...
Ist die Array-Methode hier überhaupt verwendbar und wenn ja wie.
Ich hoffe inständig, dass ihr mir weiterhelfen könnt und danke euch im Voraus.
Grüße
Robert
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
versteht das jemand? owT
25.08.2010 12:45:39
Rudi
AW: versteht das jemand? owT
25.08.2010 13:32:30
MichaV
ja, er will schnellstmöglich für jede Zelle im I6:Z999 die dazugehörige Überschriftn aus Zeile 4 und Spalte B haben. Ohne jede Zelle einzeln abklappern zu müssen.
array1=range("4:4")
array2=range("B:B")
sCoordinate1 für Zelle(10,20) wäre dann array1(10)
sCoordinate3 für Zelle(10,20) wäre dann array2(20)
Muss noch ein bisschen arbeiten, das hier soll nur als Denkanstoss dienen.
Gruss- Micha
Anzeige
AW: versteht das jemand? owT
25.08.2010 15:20:49
Bob217
Micha hat mein Problem ziemlich genau erkannt.
Nur blöd das mein VBA sooo bescheiden ist und ich mit seinem Denkanstoss nicht viel anfangen kann.
AW: versteht das jemand? owT
25.08.2010 21:54:02
MichaV
Nabend,
na dann versuch das mal:
Sub Data_to_Excel()
Dim array_top() As Variant
Dim array_left() As Variant
Dim array_data() As Variant
Dim x As Integer, y As Integer
Const ausgabe_erste_zelle = "I6"' '
Gruss- Micha
Anzeige
...und es läuft :-)
26.08.2010 07:11:42
Bob217
Guten Morgen Micha,
vielen vielen vielen Dank für die Mühe und Hilfe.
Funktioniert fantastisch!
Wünsche Dir noch einen schönen Tag
Gruß Robert
AW: .Danke für die Rückmeldung! owT
26.08.2010 08:48:07
MichaV
;
Anzeige
Anzeige

Infobox / Tutorial

Daten in Excel-Arrays einlesen und ausgeben


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten

    • Stelle sicher, dass deine Daten in einer Datenbank oder in einem anderen Format vorliegen, das du in Excel importieren kannst.
  2. VBA-Editor öffnen

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  3. Neues Modul einfügen

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)" und wähle Einfügen > Modul.
  4. VBA-Code eingeben

    • Kopiere den folgenden Code in das Modul:
    Sub Data_to_Excel()
       Dim array_top() As Variant
       Dim array_left() As Variant
       Dim array_data() As Variant
       Dim x As Integer, y As Integer
       Const ausgabe_erste_zelle = "I6"
    
       ' Beispiel: Daten in Arrays einlesen
       array_top = Range("4:4").Value
       array_left = Range("B:B").Value
       ReDim array_data(1 To 500, 1 To 100) ' Beispiel für 500 Zeilen und 100 Spalten
    
       ' Daten in das Array einfügen
       For y = 1 To 500
           For x = 1 To 100
               array_data(y, x) = "Daten_" & y & "_" & x ' Ersetze dies durch Deine Logik
           Next x
       Next y
    
       ' Array in die Tabelle ausgeben
       Range(ausgabe_erste_zelle).Resize(UBound(array_data, 1), UBound(array_data, 2)).Value = array_data
    End Sub
  5. Code ausführen

    • Drücke F5, um den Code auszuführen. Die Daten sollten nun in den angegebenen Bereich der Tabelle ausgegeben werden.

Häufige Fehler und Lösungen

  • Fehler: "Typen sind nicht kompatibel"

    • Überprüfe, ob du die richtigen Datentypen verwendest. Stelle sicher, dass die Arrays korrekt deklariert sind.
  • Fehler: "Bereich ist ungültig"

    • Achte darauf, dass die angegebene Zelladresse für die Ausgabe korrekt ist und dass der Bereich nicht außerhalb der Arbeitsmappe fällt.

Alternative Methoden

  • Direktes Einlesen ohne VBA

    • Du kannst auch Power Query verwenden, um Daten aus einer Datenbank in Excel zu importieren, ohne VBA zu nutzen. Dies ist besonders nützlich, wenn du keine Programmierkenntnisse hast.
  • Nutzung von Formeln

    • Bei weniger komplexen Datensätzen kannst du auch Excel-Formeln benutzen, um Daten dynamisch zu verknüpfen.

Praktische Beispiele

  • Beispiel für die Verwendung eines Arrays: Angenommen, du möchtest eine Tabelle mit den Wochentagen und den entsprechenden Verkaufszahlen erstellen. Du kannst ein Array verwenden, um diese Daten zu speichern und in die Tabelle auszugeben.
Sub ArrayBeispiel()
    Dim wochenTage As Variant
    Dim verkaufszahlen As Variant
    wochenTage = Array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag")
    verkaufszahlen = Array(100, 200, 150, 300, 250, 400, 350)

    Dim i As Integer
    For i = LBound(wochenTage) To UBound(wochenTage)
        Cells(i + 1, 1).Value = wochenTage(i)
        Cells(i + 1, 2).Value = verkaufszahlen(i)
    Next i
End Sub

Tipps für Profis

  • Nutze die ReDim Preserve-Anweisung, um die Größe eines bestehenden Arrays zu ändern, ohne die aktuellen Daten zu verlieren.
  • Wenn du mit großen Datenmengen arbeitest, achte darauf, die Bildschirmaktualisierung während der Verarbeitung zu deaktivieren:
Application.ScreenUpdating = False
' Dein Code
Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich Daten aus einer externen Datenbank in ein Array einlesen?
Du kannst ADO (ActiveX Data Objects) verwenden, um eine Verbindung zu einer Datenbank herzustellen und die Daten direkt in ein Array zu laden.

2. Ist die Verwendung von Arrays in Excel VBA effizient?
Ja, Arrays sind in der Regel schneller als das direkte Arbeiten mit Zellen, besonders bei großen Datenmengen, da sie die Anzahl der Interaktionen mit dem Excel-Arbeitsblatt reduzieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige