Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1096to1100
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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é

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é

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige