Live-Forum - Die aktuellen Beiträge
Datum
Titel
25.10.2025 08:21:40
24.10.2025 18:10:41
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehrdimensionales Array füllen

Mehrdimensionales Array füllen
28.03.2014 14:34:29
Albert
Hallo zusammen,
ich suche eure Hilfe beim Füllen eines dreidimensionalen Arrays. Durch das ganze googeln hab ich das Gefühl einen fetten Knoten im Gehirn zu haben. Deshalb meine Bitte um Hilfe und um Aufklärung.
Mein Ziel ist es ein Array zu füllen, welches in Abhängigkeit der Kalenderwoche (vorhanden in Spalte O):
1. aus einer Spalte die Auftragsnummern übernimmt (erste Dimension),
2. dazugehörende Artikelnnummern (zweite Dimension),
3. und die Menge zur Artikelnummer aufsummiert (dritte Dimension).
Wie müsste der Code dazu aussehen?
Um Hilfe dankbar
Albert
P.S. die Musterdatei hängt mit an...
https://www.herber.de/bbs/user/89909.xlsx

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Ich glaube nicht, dass ein klassisches, 3dArray...
28.03.2014 16:09:06
Luc:-?
…dieser Aufgabe gerecht wdn kann, Albert,
denn, wenn schon ein 2dArray stets rechteckig sein muss, müsste ein 3dArray stets Quaderform haben, d.h., die Anzahlen der ANrn dürfen zwar von denen der ArtNrn-insgesamt und auch der der Mengen-insgesamt verschieden sein, aber eben insgesamt, nicht im Detail. Also müssten alle ANrn die gleiche Anzahl von ArtNrn haben und alle ArtNrn die gleiche Anzahl von Mengen. Durch die Summation letzterer zur Gesamtmenge pro ArtNr würde hier zwar eine Übereinstimmung hergestellt, aber eben nicht untereinander, sondern mit der Anzahl der jeweiligen ArtNrn pro ANr. Die dürfte aber wohl kaum für jede ANr gleich sein. Deshalb käme wohl eher ein Vektor der ANrn infrage, dessen Elemente 1. aus der ANr und 2. aus einer Matrix aller jeweils zugehörigen ArtNrn — mit den ArtNrn in einer Zeile/Spalte und den zugehörigen Mengensummen in der anderen — bestehen. Das wäre dann nur über einen Variant mit einem Array erreichbar, wobei seine Elemente ebenfalls Variant sein müssen. Recherchiere also mal danach bzw alternativ nach Arrays in Arrays oder auch nach Dictionary-Objekt, denn das dürfte sich auch dafür eignen, ggf auch eine Collection.
Gruß Luc :-?
Besser informiert mit …

Anzeige
AW: Ich glaube nicht, dass ein klassisches, 3dArray...
28.03.2014 16:20:08
Albert
Hallo Luc,
sorry, aber ich versteh nur Bahnhof...
Alternative 2 (und die will ich nicht) wäre ein Pivot-Table.
Könntest du mir mit nem Code weiterhelfen?
Gruß
Albert

AW: Ich glaube nicht, dass ein klassisches, 3dArray...
28.03.2014 18:19:30
Christian
Hallo Albert,
ich weiß nicht was Du genau erreichen willst, aber die Alternative zu PIVOT wäre evtl. ne ganz simple Summenprodukt-Formel.
Wenn Du genauere Angaben machen kannst...
MfG Christian

Anzeige
AW: Mehrdimensionales Array füllen
28.03.2014 17:10:32
Christian
Hallo Albert,
was willst du denn erreichen?
ich vermute mal - Anzahl pro "KW, Auftragsnr und Artikelnr."
Dazu brauchst du aber keine 3 Dimensionen. Das ganze stellt sich ja wie eine Tabelle dar, sprich 2-dimensional.
Das Array könnte dann zB so aussehen (wobei "Zeile" und "Spalte" hier nur zum Verständnis dienen sollen):
Sub FillArray()
Dim vntData()
Dim k As Long
ReDim vntData(3, k)
'vntData(0, k) = Spalte-1, Zeile-k: KW
'vntData(1, k) = Spalte-2, Zeile-k: Auftragsnr
'vntData(2, k) = Spalte-3, Zeile-k: Artikelnr
'vntData(3, k) = Spalte-4, Zeile-k: Anzahl
'... dein Code ...
End Sub

Das ist aber recht aufwendig, da man bei jedem Eintrag prüfen muss, ob diese Kombination schon existiert, sonst muss das Array für k = k + 1 mit Redim Preserve vntData(3, k) erweitert werden, etc.
Einfacher geht es mit einem Dictionary (Schlüssel-Werte-Paare). Hier kannst du direkt auf einen Schlüssel zugreifen. Wenn dieser nicht existiert wird er automatisch angelegt.
Als Schlüssel würde ich vorschlagen, einfach die Strings mit entspr. Delimiter aus KW, Auftragsnr und Artikelnr zusammen zu setzen (das Dictionary erlaubt keine Arrays als Schlüssel, ist ein großes Manko bei VBS).
Gruß
Christian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mehrdimensionales Array in VBA füllen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Neues Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Code für das mehrdimensionale Array einfügen: Nutze den folgenden Beispielcode, um ein dreidimensionales Array zu initialisieren und zu füllen.
Sub FillArray()
    Dim vntData() As Variant
    Dim k As Long
    Dim kw As Long, auftragsnr As Long, artikelNr As Long

    ' Größe des Arrays anpassen
    ReDim vntData(3, 0) ' 3 Dimensionen: KW, Auftragsnr, ArtikelNr, Menge

    ' Beispielwerte hinzufügen
    For k = 1 To 10 ' Beispiel Schleife für 10 Einträge
        kw = k ' Kalenderwoche
        auftragsnr = k * 100 ' Beispiel Auftragsnummer
        artikelNr = k * 10 ' Beispiel Artikelnummer

        ' Werte in das Array einfügen
        vntData(0, k - 1) = kw
        vntData(1, k - 1) = auftragsnr
        vntData(2, k - 1) = artikelNr
        vntData(3, k - 1) = k * 5 ' Beispiel Menge
    Next k
End Sub
  1. Code ausführen: Führe den Code durch Drücken von F5 aus, um das Array zu füllen.

Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des Bereichs":

    • Ursache: Du versuchst auf ein Element des Arrays zuzugreifen, das nicht existiert. Stelle sicher, dass die Indizes richtig gesetzt sind.
  • Lösung: Überprüfe die Dimensionierung des Arrays und achte darauf, dass Du die Indizes korrekt verwendest.

  • Fehler: "Typen unverträglich":

    • Ursache: Versuche, einen nicht kompatiblen Datentyp in das Array einzufügen.
  • Lösung: Stelle sicher, dass die Datentypen, die Du in das Array einfügst, mit der Deklaration des Arrays übereinstimmen.


Alternative Methoden

  1. Eindimensionales Array verwenden: Du kannst auch ein eindimensionales Array füllen, wenn Du die Daten in einer einzigen Dimension speichern möchtest. Beispiel:
Dim eindimensionalArray() As Variant
ReDim eindimensionalArray(0 To 9)
For i = 0 To 9
    eindimensionalArray(i) = i * 10 ' Beispielwerte
Next i
  1. Dictionary verwenden: Alternativ kannst Du ein Dictionary-Objekt verwenden, um Schlüssel-Werte-Paare zu speichern. Dies ermöglicht einen flexibleren Zugriff auf die Daten.
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict("Schlüssel1") = "Wert1"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du ein mehrdimensionales Array in VBA füllen kannst:

  • Auftragsdaten:

    Sub FillOrderData()
    Dim orderData() As Variant
    Dim i As Long
    ReDim orderData(3, 0) ' KW, Auftragsnr, ArtikelNr, Menge
    
    For i = 1 To 5
        orderData(0, i - 1) = 1 ' KW
        orderData(1, i - 1) = 1000 + i ' Auftragsnummer
        orderData(2, i - 1) = 200 + i ' Artikelnummer
        orderData(3, i - 1) = 10 * i ' Menge
    Next i
    End Sub
  • Summieren von Mengen: Du kannst eine Schleife verwenden, um die Menge für jede Artikelnummer zu summieren.


Tipps für Profis

  • Redim Preserve: Nutze Redim Preserve, um die Größe eines Arrays dynamisch zu ändern, ohne die bereits vorhandenen Werte zu verlieren.
ReDim Preserve vntData(3, k) ' Erhöht die Größe um 1
  • Verwendung von Variant: Wenn Du ein mehrdimensionales Array mit unterschiedlichen Datentypen benötigst, verwende den Datentyp Variant.

  • Effiziente Datenstruktur: Überlege, ob ein Dictionary oder Collection für Deine Anforderungen besser geeignet ist, insbesondere wenn Du häufige Einfügungen und Abfragen hast.


FAQ: Häufige Fragen

1. Wie initialisiere ich ein mehrdimensionales Array in VBA?
Du kannst ein mehrdimensionales Array mit ReDim initialisieren. Beispiel: ReDim vntData(3, 0) für ein Array mit 4 Zeilen.

2. Kann ich Arrays unterschiedlicher Dimensionen in VBA haben?
Ja, Du kannst eindimensionale und mehrdimensionale Arrays in VBA verwenden. Stelle sicher, dass Du die Dimensionen entsprechend anpasst.

3. Was ist der Unterschied zwischen einem Array und einem Dictionary in VBA?
Ein Array ist eine Sammlung von Elementen des gleichen Datentyps, während ein Dictionary Schlüssel-Werte-Paare speichert und flexibler in der Handhabung ist.

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