Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrdimensionales Array mit Range-Funktion füllen | Herbers Excel-Forum"

Forumthread: Mehrdimensionales Array mit Range-Funktion füllen

Mehrdimensionales Array mit Range-Funktion füllen
29.07.2016 11:32:43
Christian

Hallo,
ich habe ein kleines Problem bei der Befüllung eines mehrdimensionalen Arrays. Kurz zum Hintergrund, ich habe eine Excel Tabelle mit 15 Spalten und einer variablen Anzahl an Zeilen. Aus dieser Tabelle möchte ich bestimmte Zeilen in ein Array schreiben und diese in ein neues Tabellenblatt einfügen. Dies stellt quasi eine Filterfunktion da. Das wollte ich so realisieren, dass ich die erste Spalte der Tabelle in ein Array schreibe und über eine For Each- Schleife ein If-Abfrage mache. Immer wenn die Abfrage wahr ist, dann soll diese Zeile in ein Array geschrieben werden. Somit soll das Array nach und nach gefüllt werden. Nur leider klappt es nicht ganz so, wie ich mir das vorstelle. Hier mein Ansatz, vllt könnt Ihr mir ja weiterhelfen.
arrSystemKey() = wbOpen.Sheets(1).Range("A1:A" & wbOpen.Sheets(1).Cells(wbOpen.Sheets(1).Rows.Count, 1).End(xlUp).row).Value
row = 0
x = 0
For Each element In arrSystemKey()
row = row + 1
If element = wsStart.Range("B2").Value Then
x = x + 1
ReDim Preserve arrShutdowns(1 To x, 1 To 15) As Variant
arrShutdowns(x) = wbOpen.Sheets(1).Range("A" & row & ":O" & row).Value
End If
Next

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
29.07.2016 12:55:17
Jürgen
Hallo Christian,
arrShutdowns(x) dürfte nicht gehen.
Versuche einmal:

for n = 1 to 15
arrShutdowns(x,n) = wbOpen.Sheets(1).Range(cells(row,n),cells(row,n).value
next n
Gruß
Jürgen
Mehrdimensionales Array
29.07.2016 12:59:48
Jürgen
Hallo Christian,
da ging bei meinem letzten Beitrag gerade was schief.
arrShutdowns(x) dürfte nicht gehen.
Versuche hier:

statt: arrShutdowns(x) = wbOpen.Sheets(1).Range("A" & row & ":O" & row).Value
besser:
for n = 1 to 15
arrShutdowns(x,n) = wbOpen.Sheets(1).Range(cells(row,n),cells(row,n)).Value
next n
Gruß
Jürgen
Anzeige
AW: Mehrdimensionales Array
03.08.2016 12:03:17
Christian
Hallo Jürgen,
vielen Dank für deine Antwort und Entschuldigung für die späte Rückmeldung, aber ich war übers WE unterwegs. Ich konnte mein Problem auch mittlerweile lösen.
Hier ist ebenfalls ein Ansatz für alle die diesen Beitrag lesen:
http://www.ms-office-forum.net/forum/showthread.php?p=1753776#post1753776
Schönen Gruß
Christian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Mehrdimensionales Array in Excel VBA füllen


Schritt-für-Schritt-Anleitung

  1. Definiere dein mehrdimensionales Array: Zuerst musst du ein mehrdimensionales Array in VBA deklarieren. Du kannst dies mit Dim tun, wenn du das Array erstellst.

    Dim arrShutdowns() As Variant
  2. Erstelle eine Range-Referenz: Verwende die Range-Funktion, um den Bereich deiner Excel-Tabelle zu erfassen, den du in das Array füllen möchtest.

    arrSystemKey = wbOpen.Sheets(1).Range("A1:A" & wbOpen.Sheets(1).Cells(wbOpen.Sheets(1).Rows.Count, 1).End(xlUp).Row).Value
  3. Initialisiere die Zählvariablen: Du benötigst Variablen, um die aktuelle Zeile und die Anzahl der Elemente im Array zu verfolgen.

    Dim row As Long
    Dim x As Long
    row = 0
    x = 0
  4. Verwende eine Schleife: Mit einer For Each-Schleife kannst du über die Elemente im Array iterieren und die gewünschten Zeilen in das mehrdimensionales Array einfügen.

    For Each element In arrSystemKey
       row = row + 1
       If element = wsStart.Range("B2").Value Then
           x = x + 1
           ReDim Preserve arrShutdowns(1 To x, 1 To 15)
           For n = 1 To 15
               arrShutdowns(x, n) = wbOpen.Sheets(1).Cells(row, n).Value
           Next n
       End If
    Next

Häufige Fehler und Lösungen

  • Fehler: Ungültige Indizes im Array
    Stelle sicher, dass du das Array mit ReDim Preserve korrekt anpasst, um neue Zeilen hinzuzufügen.

  • Fehler: Der Bereich enthält zu viele Zeilen
    Überprüfe, ob der Range, den du definierst, nicht größer ist als die maximale Anzahl an Zeilen, die dein Array fassen kann.


Alternative Methoden

Wenn du Schwierigkeiten hast, ein mehrdimensionales Array in VBA zu befüllen, kannst du auch die Collection- oder Dictionary-Objekte verwenden, um Daten zu speichern. Diese bieten eine flexiblere Möglichkeit, Daten zu organisieren, ohne die Größe im Voraus festzulegen.


Praktische Beispiele

Hier ist ein Beispiel, wie du ein zweidimensionales Array füllst, um Daten aus einer Excel-Tabelle zu extrahieren:

Dim arrDaten() As Variant
Dim i As Integer, j As Integer

' Daten aus dem Bereich A1:C10 in ein array füllen
arrDaten = wbOpen.Sheets(1).Range("A1:C10").Value

' Zugriff auf die Daten im Array
For i = LBound(arrDaten, 1) To UBound(arrDaten, 1)
    For j = LBound(arrDaten, 2) To UBound(arrDaten, 2)
        Debug.Print arrDaten(i, j)
    Next j
Next i

Tipps für Profis

  • Verwende Option Base 1: Setze diesen Befehl am Anfang deines Moduls, um die Indizierung der Arrays auf 1 zu setzen, was in Excel üblicher ist.

  • Effiziente Nutzung von Arrays: Wenn du große Datenmengen verarbeiten musst, versuche, deine Arrays in einem einzigen Schritt zu befüllen, anstatt sie einzeln zu füllen. Das verbessert die Performance.


FAQ: Häufige Fragen

1. Wie kann ich ein eindimensionales Array in VBA füllen?
Du kannst ein eindimensionales Array einfach mit einer Schleife befüllen, indem du die Indizes entsprechend anpasst.

2. Was ist der Unterschied zwischen einem eindimensionalen und einem mehrdimensionalen Array?
Ein eindimensionales Array hat nur eine Dimension, während ein mehrdimensionales Array mehrere Dimensionen hat, z.B. Zeilen und Spalten.

3. Wie kann ich ein PHP-Array mit Werten füllen?
In PHP kannst du ein Array mit der Syntax $array[] = 'Wert'; füllen. Um ein mehrdimensionales Array zu füllen, verwendest du $array['key']['subkey'] = 'Wert';.

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