Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code abänderung - Dublikate

Forumthread: Code abänderung - Dublikate

Code abänderung - Dublikate
09.12.2014 14:18:10
Artanan
Hallo zusammen,
der User "Rudi Maintaire" war so nett und hat mir einen code geschrieben.
Dieser fasst in meiner Tabelle auf besondere Art Dublikate zusammen.
Dabei wird geprüft, ob in Spalte A gleiche Seriennummern vorhanden sind und falls ja, werden die dahinter liegenden Spalten (falls nicht identisch) in einer Mehrzeiler-Zelle zusammengefasst.
Leider durchschaue ich den Code nicht so ganz und hätte aber noch eine kleine Abänderung.
Es soll nämlich geprüft werden ob die seriennummer in spalte A und das Datum in Spalte B und C identisch ist. Also Kriterium soll nicht nur "gleiche Seriennummer" sein, sondern "gleiche seriennummer, gleiches eingangsdatum und geliches ausgangsdatum" (also die ersten 3 Spalten gleich). Dann erst soll das ganze als Dublikat gelten und die restlichen Spalten werden nach bisherigem Prinzip zusammengefasst.
Ich habe mal eine Beispieldatei angehängt und den Code von Rudi. (Das ganze soll im gleichen Tabellenblatt ablaufen und nicht wie im Beispiel in ein Vorher und ein Nachher blatt getrennt werden)
Wäre cool, wenn einer eine Idee hat.
vielen Dank!
Sub aaaa()
Dim objDic(1 To 8) As Object, oDicA, oDicB, arrIn, arrOut(), i As Long, j As Long
For i = 1 To 8
Set objDic(i) = CreateObject("scripting.dictionary")
Next
arrIn = ActiveSheet.Cells(1, 1).CurrentRegion
For i = 1 To UBound(arrIn)
objDic(1)(arrIn(i, 1)) = 0
For j = 2 To UBound(arrIn, 2)
objDic(j)(arrIn(i, 1) & "|" & arrIn(i, j)) = arrIn(i, j)
Next
Next
ReDim arrOut(1 To objDic(1).Count, 1 To 8)
i = 0
For Each oDicA In objDic(1)
i = i + 1
arrOut(i, 1) = oDicA
For j = 2 To 8
For Each oDicB In objDic(j)
If Split(oDicB, "|")(0) = oDicA Then
If arrOut(i, j) = "" Then
arrOut(i, j) = objDic(j)(oDicB)
Else
arrOut(i, j) = arrOut(i, j) & vbLf & objDic(j)(oDicB)
End If
End If
Next oDicB
Next j
Next oDicA
With ActiveSheet
.Cells.ClearContents
.Cells(1, 1).Resize(UBound(arrOut), UBound(arrOut, 2)) = arrOut
End With
End Sub

https://www.herber.de/bbs/user/94308.xlsm

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code abänderung - Dublikate
09.12.2014 14:47:27
Daniel
Hi
würde ich ohne Makro machen:
1. Tabelle nach den Kriteriumsspalten A, B und C sortieren, so dass zusammengehörige Werte direkt untereinander stehen.
2. für jedes Spalte die zusammengefasst werden soll, eine Hilfsspalte nach folgendem Schema anlegen (hier für Spalte D, Formel ist für Zeile2 und muss nach unten kopiert werden, Hilfsspalte sei I):
=D2&Wenn(Und(A2=A3;B2=B3;C2=C3);Zeichen(10)&I3;"")
3. Hilfsspalten kopieren und als Wert einfügen, Originalspalten löschen
4. auf die ganze Tabelle die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN anwenden, mit den Spalten A, B und C als Kriterium.
Gruß Daniel
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