Doppelte Zeilen löschen

Viel Zeit und Mühe kann Ihnen dieses Makro sparen, wenn Sie aus einer Tabelle doppelte Zeilen löschen wollen. Praktische Anwendungsbeispiele sind z.B. doppelte Kundendatensätze löschen, Postleitzahlenlisten bereinigen oder Adressdaten auf doppelte Einträge prüfen.

Für das kurze Beispiel wird die Spalte A auf doppelte Einträge geprüft und wenn doppelte Einträge festgestellt werden, die jeweilige Zeile komplett gelöscht. Achtung: Sie können die Änderungen eines ausgeführten Makros nicht wieder rückgängig machen. Am Besten speichern Sie vorher die Datei nochmals ab, um ggf. die gespeicherte Datei verwenden zu können, falls das Ergebnis nicht wie gewünscht ist.

Um das Makro zu nutzen zu können, fügen Sie den Excel Makro-Programmcode in ein Modul einfügen:

Sub DoppelteZeilenLöschen()

Dim letzteZeile As Long
Dim Zeile As Long

letzteZeile = Range("A" & Rows.Count).End(xlUp).Row

For Zeile = letzteZeile To 1 Step -1
  If WorksheetFunction.CountIf(Range("A1:A" & Zeile), Range("A" & Zeile)) > 1 Then
    Rows(Zeile).EntireRow.Delete
  End If
Next

End Sub

Anzahl der Zeilen abhängig von der genutzten Excel-Version

Wichtig: Statt Rows.Count kann auch eine Zahl für die Ermittlung der letzten Zeile angegeben werden. Dies ist jedoch nicht zu empfehlen, da die Anzahl der vorhandenen Zeilen abhängig von der genutzter Excel-Version ist. Die angegebene Zeilenzahl 65536 in der Programmzeile “letzteZeile = Range(“A65536″).End(xlUp).Row” bezieht sich auf die Excel-Versionen bis Excel 2003. Ab Excel 2007 gibt es bis zu 1048576 Zeilen. Möchten Sie den VBA-Code für Excel-Versionen ab Excel 2007 nutzen, ändern Sie die Zeile wie folgt ab: “letzteZeile = Range(“1048576″).End(xlUp).Row”. So gehen Sie sicher, dass auch Inhalte nach der Zeile 65536 berücksichtigt werden. Bei älteren Versionen dagegen würde die geänderte Version zu einem Absturz des Makros führen!

Anschließend können Sie Ihn über das Menü “Extras”, “Makro”, “Makros” oder über eine Schaltfläche ausführen. Wie Sie eine Schaltfläche mit einem Makro belegen wird im Beitrag “Erste Schritte” beschrieben.

Alternativ können Sie folgende Beispieldatei verwenden:
Excel Makro: Doppelte Zeilen Löschen

Alternative mit Bordmitteln: Duplikate entfernen

Falls einzig die Entfernung von doppelten Werten innerhalb eines definierten Zellbereichs erfolgen soll, gibt es mit der Funktion „Duplikate entfernen in neueren Office Versionen eine mögliche Alternative zum oben bereitgestellten VBA Code. Die Vorteile dieser Excel Standardfunktion sind die größere Performance bei großen Datenmengen und die Flexibilität bei der Definition was als Dublette angesehen werden soll.

Es gibt nicht nur Vorteile, sondern auch einige Nachteile bei dieser Variante zu beachten, die in einigen Konstellationen gegen eine Nutzung sprechen. Die Funktion hält nicht ganz, was der Tooltip (siehe Abbildung unten) verspricht.

Alternative zum VBA-Makro: Doppelte Zeilen löschen

Einschränkungen der Standardfunktion „Duplikate entfernen“

Mit der Standardfunktion „Duplikate entfernen“ wird eben nicht die ganze Zeile gelöscht, sondern jeweils nur die Inhalte in einem zuvor ausgewählten Zellbereich. Nicht markierte und nicht zusammenhängende Bereiche bleiben unverändert stehen.

Standardfunktion Duplikate entfernen ausführen

Abbildung: vorher

Inhalte unterhalb oder rechts neben der Datentabelle bleiben damit gänzlich unberücksichtigt. Zeilen unterhalb der Tabelle verlieren so den Anschluss, wenn die Werte darüber teilweise entfernt werden. Gibt es in der Tabelle eine vollständig leere Spalte, muss aktiv der Bereich vollständig ausgewählt werden. Excel markiert sonst beim Start der Funktion nur den zusammenhängenden Zellbereich zur aktuell aktiven Zelle.

Die außerhalb der Markierung liegenden Tabellenbereiche, bleiben bei der Entfernung von Duplikaten immer unberücksichtigt. Falls eine Abhängigkeit zum bereinigten Zellbereich besteht, sind diese Daten dann nicht mehr den richtigen Zeilen zugeordnet. Hintergrund: Durch die gelöschten Duplikate verkleinert sich der Zellbereich nach oben (siehe Abbildungen vorher/nachher)! Die Entfernung von Duplikaten über die Excel Standardfunktion kann in diesem Fall jedoch wieder rückgängig gemacht werden.

Die Standardfunktion Duplikate entfernen löscht nicht die gesamte Zeile

Abbildung: nachher

Die Formulierung “Doppelte Zeilen aus einem Blatt löschen” im Hinweistext zur Standardfunktion “Duplikate entfernen” ist deshalb missverständlich, da nicht tatsächlich die ganze Zeile gelöscht wird, sondern nur die doppelten Werte innerhalb eines markierten Zellbereichs.

 
Gefällt Ihnen der Beitrag?

7 Gedanken zu “Doppelte Zeilen löschen

    • @Silvan: Stimmt, das ist die bessere Variante. Ursprünglich hatte ich die Variante mit Range(“A65536”) verwendet, um auch VBA Anfängern die Funktionsweise besser näherbringen zu können. Ich habe jedenfalls die Erfahrung gemacht, dass diese Variante besser zu vermitteln ist. Da in der Zwischenzeit aber die überwiegende Anzahl der Office-Anwender mit einer neueren Excel-Version (ab Version 2007) ist diese Variante natürlich inzwischen problematisch. Je nach Version muss mit einer unterschiedlichen letzten möglichen Zeile gearbeitet werden. Daher ist die Variante mit Rows.Count inzwischen absolut zu empfehlen. Bei Gelegenheit werde ich die veröffentlichten Codes noch entsprechend anpassen.

      Viele Grüße
      Marco

  1. Hallo !
    Kann man einen Vergleich von Spalte A und C machen und dann das Original und das Duplikat löschen ? Datei hat eine Überschrift.
    Danke
    chris

    • @Chris: Grds. kann man mit VBA so ziemlich alles realisieren. Maßgeschneiderte VBA-Lösungen biete ich auf Anfrage gerne an. http://www.makro-excel.de/erstellungsservice/ Bei Interesse bitte per Email die Datei zusenden und genau definieren, was verglichen werden soll, wo das Ergebnis ausgegeben werden soll. Nicht ganz verstanden habe ich, was genau gelöscht werden soll. Ich kann dann gerne ein individuelles Angebot erstellen.

  2. Moin Marco!
    Mit Verlaub:
    Sie haben die denkbar schlechteste/langsamste Variante gewählt!
    Wozu gibt es Daten, Duplikate entfernen?

    • @RPP63: Die Funktion Duplikate entfernen ist in der Tat sehr nützlich und nutze ich persönlich auch ziemlich oft. Mit dieser Excel-Standardfunktion wird jedoch nicht eine gesamte Zeile gelöscht, sondern nur ein markierter Zellbereich auf doppelte Werte geprüft und die darin enthaltenen doppelten Werte entfernt.

      Den Beitrag habe ich heute ergänzt und die Unterschiede zwischen diesen beiden Varianten erklärt.

  3. Hallo,

    vielen Dank für diesen sehr hilfreichen Beitrag! Er funktioniert sehr gut, allerdings würde ich gerne eine kleine Ausnahme einfügen und bitte dabei um Hilfe.
    Es sollen doppelte Werte nur gelöscht werden, wenn die Zelle nicht leer ist.
    Ich habe eine Liste mit Bestellnummern, die über eine hinterlegte Formel aus einem anderen Excel Dokument geholt werden. In leeren Zellen ist also eine Formel eingetragen, aber noch keine Nummer, da diese erst mit der Zeit in dem anderen Dokument ergänzt werden.
    Lass ich nun die Funktion durchlaufen, werden auch die leeren Felder mit hinterlegter Formel gelöscht. Die hinterlegte Formel ist dann weg.
    Ist es möglich hier eine Ausnahme einzubeziehen?

    Vielen herzlichen Dank und liebe Grüße
    Kristina

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.