ich habe die Suchfunktion benutzt, aber leider ohne zufriedenstellendes Ergebnis.
Ich möchte per Makro alle doppelten Zeilen in einem Blatt löschen, wenn
die Inhalte der Spalten A und E komplett übereinstimmen.
Kann mir jemand helfen?
Grüße,
Daniel
Sub DoppelteLöschen()
Dim sp As Long
Dim ze As Long
'--- Tabellengrösse feststellen
sp = Cells(1, Columns.Count).End(xlToLeft).Column
ze = Cells(Rows.Count, 1).End(xlUp).Row
'--- Original-Reihenfolge sichern
With Cells(1, sp + 1).Resize(ze, 1)
.FormulaR1C1 = "=Row()"
.Formula = .Value
End With
'--- Daten umsortieren für höhere Geschwindigkeit
Range("A1").CurrentRegion.Sort _
Key1:=Range("A2"), order1:=xlAscending, _
Key2:=Range("E2"), order1:=xlAscending, _
Key3:=Range("B2"), order1:=xlAscending, _
header:=xlYes
'--- Doppelte Datensätze mit Formel markieren und löschen
With Cells(2, sp + 2).Resize(ze - 1, 1)
.FormulaR1C1 = "=IF(AND(RC1=R[-1]C1,RC2=R[-1]C2,RC5=R[-1]C5),"""",RC[-1])"
.Formula = .Value
.CurrentRegion.Sort Key1:=Cells(2, sp + 2), order1:=xlAscending, header:=xlYes
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Cells(1, sp + 1).Resize(ze, 2).ClearContents
End Sub
die Bedingungen, damit das Makro funktioniert:
- die Tabelle an sich ist geschlossen, dh sie enthält keine Leerzeilen und -Spalten
- die Tabelle hat eine einzeilige Überschrift
- die Tabelle darf umsortiert werden (allerdings wird die originalsortierung am Ende wieder hergestellt)
- das Blatt enthält außer der Tabelle keine weiteren Daten
Gruß, Daniel
Um doppelte Zeilen in Excel zu löschen, insbesondere wenn du zwei Spalten als Kriterium verwenden möchtest, kannst du folgende Schritte ausführen:
Daten
> Filter
> Spezialfilter
.Wenn du mit mehreren Spalten arbeitest, stelle sicher, dass deine Liste eine Überschrift hat, damit Excel diese als solche erkennt.
Für eine VBA-Lösung kannst du den folgenden Code verwenden:
Sub DoppelteLöschen()
Dim sp As Long
Dim ze As Long
sp = Cells(1, Columns.Count).End(xlToLeft).Column
ze = Cells(Rows.Count, 1).End(xlUp).Row
With Cells(1, sp + 1).Resize(ze, 1)
.FormulaR1C1 = "=Row()"
.Formula = .Value
End With
Range("A1").CurrentRegion.Sort Key1:=Range("A2"), order1:=xlAscending, Key2:=Range("E2"), order1:=xlAscending, header:=xlYes
With Cells(2, sp + 2).Resize(ze - 1, 1)
.FormulaR1C1 = "=IF(AND(RC1=R[-1]C1,RC5=R[-1]C5),"""",RC[-1])"
.Formula = .Value
.CurrentRegion.Sort Key1:=Cells(2, sp + 2), order1:=xlAscending, header:=xlYes
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Cells(1, sp + 1).Resize(ze, 2).ClearContents
End Sub
Achte darauf, dass deine Tabelle keine Leerzeilen oder -spalten enthält und dass sie eine einzeilige Überschrift hat.
Fehlermeldung „Keine Zellen gefunden“:
On Error Resume Next
verwendest. Kein Ergebnis nach dem Spezialfilter:
Eine weitere Möglichkeit, um doppelte Werte zu löschen, ist die Verwendung von bedingter Formatierung:
Start
> Bedingte Formatierung
> Regeln zum Hervorheben von Zellen
> Doppelte Werte
.Du kannst dann manuell die hervorgehobenen Zeilen löschen.
Angenommen, du hast folgende Daten:
A | B | E |
---|---|---|
Max | 100 | Berlin |
Max | 100 | Berlin |
Tom | 200 | Hamburg |
Max | 100 | Berlin |
Um die doppelten Zeilen zu löschen, die in Spalte A und E identisch sind, kannst du die oben genannte Schritt-für-Schritt-Anleitung verwenden. Nach dem Löschen solltest du nur noch:
A | B | E |
---|---|---|
Max | 100 | Berlin |
Tom | 200 | Hamburg |
sehen.
1. Wie kann ich doppelten Inhalt aus mehreren Spalten entfernen? Du kannst die oben beschriebene Methode mit dem Spezialfilter verwenden oder ein Makro anpassen, das mehrere Spalten berücksichtigt.
2. Was passiert mit den gelöschten Zeilen? Die gelöschten Zeilen werden dauerhaft aus der Tabelle entfernt. Stelle sicher, dass du eine Sicherungskopie deiner Daten hast, bevor du das Löschen durchführst.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen