Zeilen Duplikate löschen

Bild

Betrifft: Zeilen Duplikate löschen
von: robin
Geschrieben am: 02.11.2015 10:13:52

Hallo Community,
ich suche eine Möglichkeit um in einer Tabelle mit dynamischen Datenbereich die Zeilen-Duplikate zu löschen. Die Tabelle hat 9 Spalten. In der Tabelle stehen Inhalte mit einem grünen Dreieck oben links in der Zelle. Statt einer normalen Zahl steht dann zum Beispiel immer:
'20
da.
Ich gehe davon aus, dass das der Grund ist warum nachfolgende Funktion nicht klappt:
Dim wb As Workbook
Set wb = Workbooks.Open("Dateiname")
wb.Sheets("Status").Select
Sheets("Status").Range("$A$1:$E$65000").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5), _
Header:=xlYes
Workbooks("Dateiname").Close SaveChanges:=True
Bei einfachen Tabelleninhalten mit normalen Zahlen klappt das nämlich.
Falls Daten nun doppelt in dieses Dokument geladen werden, werden die 9 Spalten zunächst nach Datum (in Spalte 9) sortiert, anschließend soll nun die Prüfung erfolgen ob es doppelte Inhalte in den verschiedenen Zeilen gibt.
Habt ihr eine Idee wie man das nun umsetzen könnte, wenn man bedenkt, dass in den ersten 6 Spalten ein Wert/ eine Nummer immer mit ' beginnt ( sprich: '120 oder 'DO, etc.)
Danke für eure Hilfe

Bild

Betrifft: AW: Zeilen Duplikate löschen
von: Daniel
Geschrieben am: 02.11.2015 10:28:06
HI
ob Text oder Zahl ist dem RemoveDuplicates egal.
es ignoriert auch das Texterkennungszeichen.
dh die Zahl 120 und der Text '120 sind Duplikate voneinander und werden entfernt (ausser dem ersten natürlich)
was mich etwas stutzig macht ist, dass du sagst, dass deine Tabelle 9 spalten gross ist, du aber das Duplikateentfernen nur auf die ersten 5 (A-E) Spalten anwendest.
dh die Spalten F-I bleiben unverändert.
beim RemoveDuplicates muss man vor dem Befehl den ganzen Zellbereich angeben, in welchem die Zeilen entfernt werden sollen und als ersten Parameter dann die Spalten, welche für die Duplikatsprüfung herangezogen werden sollen:
wenn deine Tabelle 9 Spalten breit ist dann:

Sheets("Status").Range("A:I").Removeduplicates Columns:=Array(1, 2, 3, 4, 5), Header:=xlyes
Gruß Daniel

Bild

Betrifft: AW: Zeilen Duplikate löschen
von: robin
Geschrieben am: 02.11.2015 10:40:38
Hallo Daniel,
danke für die schnelle Antwort.
Mein Code Beispiel war etwas schlecht erklärt. Dieses habe ich für ein anderes Tabellenblatt verwendet, wo es nur 5 Spalten gibt. Ich hatte versucht dies auch für die Tabelle mit 9 Spalten anzuwenden, aber da kam ich nicht weiter.
Meinst du also um meine Tabelle nun auf Duplikate zu überprüfen und die Zeilen zu entfernen, brauch ich nur die eine Zeile zu ändern?
Sheets("Status").Range("$A$1:$I$1048576").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8, 9), _
Stimmt das so mit dem Array, dass das dann auf 9 erweitert wird?
VG Robin

Bild

Betrifft: AW: Zeilen Duplikate löschen
von: Daniel
Geschrieben am: 02.11.2015 10:53:21
Hi
im Array gibst du die relativen Spaltennummern derjenigen Spalten an, die für die Duplikatsprüfung herangezogen werden.
wenn du im Array alle Spalten von 1-9 angibst, müssen auch in zwei Zeilen alle Spaltenwerte (A-I) gleich sein, damit die Duplikatsprüfung die zweite Zeile löscht.
wenn nur die Werte von Spalte A und B übereinstimmen müssen, damit die Zeile als Duplikat erkannt wird, gibt man auch nur diese zwei Spalten im Array an.

Sheets("Status").Range("A:I").Removeduplicates Columns:=Array(1, 2), Header:=xlyes
Gruß Daniel

Bild

Betrifft: AW: Zeilen Duplikate löschen
von: robin
Geschrieben am: 02.11.2015 10:57:02
Daniel,
danke dir für deine Hilfe,
ich habe da wohl etwas voreilig reagiert, denn jetzt klappt alles tadellos.
Vielen Dank :)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen Duplikate löschen"