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

Forumthread: VBA: Spalten zusammenführen, ohne Duplikate

VBA: Spalten zusammenführen, ohne Duplikate
André
Moin zusammen,
leider komme ich nach wie vor weder mit VBA noch mit der VBA-Hilfe gut zurecht. Deshalb habe ich mal wieder ein Problem, das wahrscheinlich sehr simpel zu lösen ist:
In zwei Tabellenblättern befinden sich jeweils ab Zelle A5 eine unbestimmte Anzahl an Werten in Spalte A.
Diese sollen in ein drittes Arbeitsblatt in Spalte A (ab Zeile 5) kopiert werden, wobei keine Duplikate kopiert werden sollen.
Randbedingung: es handelt sich um sehr viele Werte (größer 50.000). Die Zielspalte im dritten Arbeitsblatt ist Teil eines Tabellenbereichs mit mehreren komplizierten Spaltenformeln. Ich kann also nicht einfach alle Werte in die dritte Tabelle kopieren und dann mittels Range.RemoveDuplicates die Duplikate entfernen, da das in meinem Fall viel zu lange dauert. Ich denke also, daß ich zunächst alle Werte in ein VBA-Array importieren und in diesem Array dann die Duplikate entfernen muß, bevor ich die Werte in die Zieltabelle schreibe. Und genau da komme ich nicht weiter.
Ich hoffe, ich konnte das einigermaßen verständlich ausdrücken. Beispieltabelle kann ich nicht so einfach hochladen, da das Teil eines großen Projekts ist. Falls nötig, bastele ich aber eine kleine Demotabelle.
Gruß, André
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA: Spalten zusammenführen, ohne Duplikate
02.09.2009 09:50:30
Rudi
Hallo,
Sub tt()
Dim oD As Object, rngC As Range
Set oD = CreateObject("Scripting.Dictionary")
With Sheets(1) 'erste Tab lesen
For Each rngC In .Range(.Cells(5, 1), .Cells(Rows.Count, 1).End(xlUp))
If Not oD.exists(rngC.Value) Then
oD.Add rngC.Value, rngC.Value
End If
Next
End With
With Sheets(2)  '2.Tab lesen
For Each rngC In .Range(.Cells(5, 1), .Cells(Rows.Count, 1).End(xlUp))
If Not oD.exists(rngC.Value) Then
oD.Add rngC.Value, rngC.Value
End If
Next
End With
'Daten eintragen
Sheets(3).Cells(2, 1).Resize(oD.Count) = WorksheetFunction.Transpose(oD.keys)
End Sub

Gruß
Rudi
Anzeige
Funzt! Danke
02.09.2009 10:26:44
André
Moin Rudi,
das funktioniert wunderbar und ist auch angenehm schnell. Danke für die schnelle Hilfe.
Gruß, André
;

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

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