Doppelte Zeilen löschen

Viel Zeit und Mühe kann Ihnen dieses Makro sparen, wenn Sie aus einer Tabelle die doppelten Einträge 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("A65536").End(xlUp).Row

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

End Sub

Wichtig: 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

 

4 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.

Schreibe einen Kommentar

*