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

Zweidimensionale Collection mit Daten füllen

Forumthread: Zweidimensionale Collection mit Daten füllen

Zweidimensionale Collection mit Daten füllen
10.11.2015 10:08:29
JB
Hallo zusammen,
ich möchte in meinem Programm, das Daten aus mehreren Excel-Dateien ausliest, diese verschiedenen Daten nacheinander in eine Collection speichern. Ich habe noch nie mit diesem Datentyp gearbeitet und brauche deshalb eure Hilfe.
Die Daten werden in einer Sub gesammelt und in einfachen Variablen pro Schleifendurchgang zwischengespeichert. Am Ende möchte ich, dass alle diese Daten in der Collection zur Verfügung stehen.
Eine weitere Schwierigkeit ist dabei, dass die Variable S/N mehrmals den gleichen Wert haben kann. Ist das der Fall, sollen die damit verbundenen Daten nicht in einer neuen Zeile, sondern in den Spalten hinter den anderen S/N-Daten gespeichert werden. Dafür müsste also eine entsprechende Abfrage vorgesehen werden.
Wie könnte man das realisieren und wie wird die Collection richtig initialisiert?
Danke&Grüße!

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zweidimensionale Collection mit Daten füllen
10.11.2015 10:15:50
JB
Das Schema der Collection soll folgendermaßen aussehen:
S/N | Datum ESN TSO CSO WS | Datum ESN TSO CSO WS | ...
S/N | ...
..
..

AW: Zweidimensionale Collection mit Daten füllen
10.11.2015 13:14:55
Rudi
Hallo,
als Anregung:
Sub aa()
Dim myCol As New Collection, t, i
On Error Resume Next
For i = 2 To 10
myCol.Add Cells(i, 2).Value, Cells(i, 1).Value
If Err Then
t = myCol(Cells(i, 1).Value)
t = Join(t)
t = t & " " & Cells(i, 2).Value
myCol.Remove Cells(i, 1).Value
myCol.Add Split(t), Cells(i, 1).Value
Err.Clear
End If
Next
End Sub
Ich bevorzuge das Dictionary-Objekt. Ist einfacher zu handhaben.
Gruß
Rudi

Anzeige
AW: Zweidimensionale Collection mit Daten füllen
10.11.2015 13:39:44
JB
Hallo Rudi,
danke für deine Antwort. Ich brauche aber noch ein bisschen mehr Input, da ich zum ersten Mal mit einer Collection arbeite und mir daher dein Code nicht ganz klar ist.
WIe kann ich das mit der dynamischen Spaltenanzahl umsetzten? WIe kann ich überprüfen, ob eine bestimmte S/N-Nummer bereits in einer Zeile der Collection enthalten ist?
Grüße

Anzeige
AW: Zweidimensionale Collection mit Daten füllen
10.11.2015 13:56:34
Rudi
Hallo,
da ich zum ersten Mal mit einer Collection arbeite
ich arbeite nie damit.
WIe kann ich überprüfen, ob eine bestimmte S/N-Nummer bereits in einer Zeile der Collection enthalten ist?
Indem du versuchst, es hinzuzufügen. Falls vorhanden: FEHLER. Deshalb On Error Resume Next.
WIe kann ich das mit der dynamischen Spaltenanzahl umsetzten?
Habe ich eingebaut. Der Collection wird ein Datenfeld hinzugefügt. (If Err Then ...)
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zweidimensionale Collection in Excel mit VBA füllen


Schritt-für-Schritt-Anleitung

Um eine zweidimensionale Collection in Excel mit VBA zu füllen, folge diesen Schritten:

  1. Initialisiere die Collection: Erstelle eine neue Collection mit dem Befehl Dim myCol As New Collection.

  2. Daten sammeln: Verwende eine Schleife, um die Daten aus den Zellen zu lesen. Beispielsweise:

    For i = 2 To 10
       myCol.Add Cells(i, 2).Value, Cells(i, 1).Value
    Next i
  3. Überprüfe auf Duplikate: Nutze On Error Resume Next, um Fehler zu ignorieren, die auftreten, wenn du versuchst, einen bereits vorhandenen Schlüssel hinzuzufügen. Wenn ein Fehler auftritt, kannst du die bestehenden Daten in der Collection aktualisieren.

  4. Daten hinzufügen: Wenn die S/N bereits existiert, aktualisiere die vorhandene Zeile, indem du die neuen Daten anfügst. Beispiel:

    If Err Then
       t = myCol(Cells(i, 1).Value)
       t = Join(t)
       t = t & " " & Cells(i, 2).Value
       myCol.Remove Cells(i, 1).Value
       myCol.Add Split(t), Cells(i, 1).Value
       Err.Clear
    End If
  5. Verwende die Collection: Am Ende deiner Schleife stehen dir alle gesammelten Daten in der Collection zur Verfügung.


Häufige Fehler und Lösungen

  • Fehler beim Hinzufügen von Werten: Wenn du versuchst, einen Wert mit einem bereits verwendeten Schlüssel hinzuzufügen, kann ein Laufzeitfehler auftreten. Nutze On Error Resume Next, um dies zu vermeiden.

  • Daten nicht korrekt gespeichert: Stelle sicher, dass der Schlüssel (z.B. S/N) eindeutig ist. Wenn du mehrere Werte für einen Schlüssel speichern möchtest, musst du sie in ein Array oder eine Liste umwandeln.


Alternative Methoden

Wenn du mit einer Excel Collection nicht zurechtkommst oder eine einfachere Handhabung bevorzugst, kannst du das Dictionary-Objekt in VBA verwenden. Dieses ermöglicht eine bessere Handhabung von Schlüssel-Wert-Paaren und vermeidet einige der Komplikationen, die mit der Collection vba excel auftreten können.

Hier ein Beispiel:

Dim myDict As Object
Set myDict = CreateObject("Scripting.Dictionary")

Praktische Beispiele

Ein praktisches Beispiel zur Nutzung einer Excel vba collection könnte so aussehen:

Sub PopulateCollection()
    Dim myCol As New Collection
    Dim i As Integer, t As Variant

    On Error Resume Next
    For i = 2 To 10
        myCol.Add Cells(i, 2).Value, Cells(i, 1).Value
        If Err Then
            t = myCol(Cells(i, 1).Value)
            t = Join(t)
            t = t & " " & Cells(i, 2).Value
            myCol.Remove Cells(i, 1).Value
            myCol.Add Split(t), Cells(i, 1).Value
            Err.Clear
        End If
    Next i
End Sub

Tipps für Profis

  • Verwende das Dictionary-Objekt: Es bietet viele Vorteile gegenüber der Excel Collection, besonders bei der Handhabung von Duplikaten.

  • Dokumentiere deine Variablen: Halte deine Variablen gut organisiert und dokumentiere sie, um den Überblick zu behalten.

  • Teste deine Schleifen: Überprüfe stets, ob deine Schleifen korrekt durchlaufen werden und die erwarteten Werte in der Collection speichern.


FAQ: Häufige Fragen

1. Wie initialisiere ich eine Collection in VBA?
Du kannst eine Collection in VBA mit Dim myCol As New Collection initialisieren.

2. Was mache ich, wenn ich Duplikate in meiner Collection habe?
Verwende On Error Resume Next, um Fehler beim Hinzufügen eines bereits existierenden Schlüssels zu ignorieren und aktualisiere die vorhandenen Werte.

3. Gibt es eine bessere Alternative zur Collection?
Ja, das Dictionary-Objekt ist oft einfacher zu handhaben und bietet mehr Flexibilität beim Arbeiten mit Schlüssel-Wert-Paaren.

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