Doppelte Datensätze finden und farbig markieren (in unsortierer Liste)

 

Funktionsweise und Einsatzzweck

Unten im Artikel finden Sie das VBA-Makro, welches Excel-Listen systematisch nach doppelten Einträgen durchsucht und hebt diese durch farbliche Markierung hervor. Ein entscheidender Vorteil: Die Daten müssen nicht vorab sortiert werden. Das Makro arbeitet zuverlässig mit jeder beliebigen, ungeordneten Datenliste.

Wichtige Hinweise zur Installation

Fügen Sie den Code ausschließlich in ein separates Code-Modul ein, nicht direkt in ein Tabellenblatt. Dies gewährleistet die korrekte Funktionsweise und verhindert Fehler bei der Ausführung.

Ablauf des Makros im Detail

Schritt 1: Festlegung des Prüfbereichs

Beim Start erscheint ein Dialogfenster, in dem Sie die Startzelle angeben. Beispiele für gültige Eingaben sind "A1", "F6" oder jede andere Zellenadresse. Ab dieser Position beginnt das Makro mit der Duplikatsprüfung.

Schritt 2: Automatische Bereichserkennung

Das Programm ermittelt eigenständig den zusammenhängenden Datenbereich ausgehend von Ihrer Startzelle. Sie müssen die Listengröße nicht manuell definieren.

Schritt 3: Vergleichsprozess

Das Makro durchläuft die Liste mehrfach und vergleicht jeden Eintrag systematisch mit allen nachfolgenden Werten. Dieser Algorithmus stellt sicher, dass wirklich alle Duplikate erfasst werden.

Schritt 4: Farbliche Kennzeichnung

  • Erste Duplikate werden blau markiert (ColorIndex = 5)
  • Weitere doppelte Einträge erhalten eine rote Markierung (ColorIndex = 3)
  • Leere Zellen bleiben unberücksichtigt und werden nicht eingefärbt
  • Bereits markierte Zellen werden nicht erneut bearbeitet

Technische Details zum Code

Das Makro nutzt verschiedene Excel-Objekte und Variablen:

  • Spalten: Speichert den gesamten zusammenhängenden Datenbereich
  • zelle1/zelle2: Referenzzellen für den Vergleichsvorgang
  • Schleifenvariablen (x, y, z, i): Steuern die Durchläufe durch die Liste
  • eing: Nimmt die Benutzereingabe der Startzelle auf

Leistungsoptimierung während der Ausführung

Für schnellere Verarbeitung deaktiviert das Makro temporär die Bildschirmaktualisierung (ScreenUpdating = False) und schaltet auf manuelle Berechnung (Calculation = xlCalculationManual). Nach Abschluss werden beide Funktionen automatisch wiederhergestellt.

Rückkehr zum Ausgangszustand

Am Ende springt die Zellenauswahl automatisch zu Zelle A1 zurück. Die Excel-Einstellungen für Bildschirmdarstellung und Berechnungsmodus werden auf ihre Standardwerte zurückgesetzt.

Praktische Anwendungsbeispiele

Dieses Makro eignet sich hervorragend für:

  • Kundenlisten mit potenziellen Mehrfacheinträgen
  • Artikelnummern in Bestandsverzeichnissen
  • E-Mail-Adressen in Verteilerlisten
  • Mitarbeiterdaten zur Qualitätssicherung
  • Beliebige Datensätze, die auf Eindeutigkeit geprüft werden müssen

Die farbliche Unterscheidung ermöglicht eine schnelle visuelle Kontrolle und erleichtert die anschließende Bereinigung der Datenbasis erheblich.



Erfassen Sie dieses Makro ist in ein Code-Modul, nicht in ein Tabellenblatt.

 


Option Explicit

Sub Duplikate_Markieren_Verbessert()
    Dim ws As Worksheet
    Dim startZelle As Range
    Dim datenBereich As Range
    Dim zelle As Range
    Dim vergleichsZelle As Range
    Dim startAdresse As String
    Dim gefundeneDuplikate As Object
    Dim schluessel As String
    
    ' Worksheet festlegen
    Set ws = ActiveSheet
    
    ' Startzelle abfragen
    On Error Resume Next
    startAdresse = InputBox("Bitte geben Sie die Startzelle ein (z.B. A1 oder F6):", _
                           "Startposition für Duplikatsprüfung", "A1")
    
    If startAdresse = "" Then
        MsgBox "Vorgang abgebrochen.", vbInformation
        Exit Sub
    End If
    
    Set startZelle = ws.Range(startAdresse)
    
    If startZelle Is Nothing Then
        MsgBox "Ungültige Zellenadresse!", vbExclamation
        Exit Sub
    End If
    On Error GoTo 0
    
    ' Datenbereich ermitteln
    Set datenBereich = startZelle.CurrentRegion
    
    If datenBereich.Cells.Count = 1 Then
        MsgBox "Kein zusammenhängender Datenbereich gefunden.", vbInformation
        Exit Sub
    End If
    
    ' Performance-Optimierung
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    
    ' Dictionary für schnellere Duplikatserkennung
    Set gefundeneDuplikate = CreateObject("Scripting.Dictionary")
    
    ' Zuerst alle Formatierungen entfernen
    datenBereich.Interior.ColorIndex = xlNone
    
    ' Durch alle Zellen iterieren
    For Each zelle In datenBereich.Cells
        If zelle.Value <> "" Then
            schluessel = CStr(zelle.Value)
            
            If gefundeneDuplikate.Exists(schluessel) Then
                ' Duplikat gefunden - rot markieren
                zelle.Interior.Color = RGB(255, 200, 200) ' Hellrot
                
                ' Auch das Original rot markieren (falls noch nicht geschehen)
                If gefundeneDuplikate(schluessel).Interior.ColorIndex = xlNone Then
                    gefundeneDuplikate(schluessel).Interior.Color = RGB(255, 200, 200)
                End If
            Else
                ' Ersten Eintrag speichern
                gefundeneDuplikate.Add schluessel, zelle
            End If
        End If
    Next zelle
    
    ' Ursprungszustand wiederherstellen
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    
    ' Ergebnis anzeigen
    Dim anzahlDuplikate As Long
    anzahlDuplikate = 0
    
    For Each zelle In datenBereich.Cells
        If zelle.Interior.Color = RGB(255, 200, 200) Then
            anzahlDuplikate = anzahlDuplikate + 1
        End If
    Next zelle
    
    If anzahlDuplikate > 0 Then
        MsgBox anzahlDuplikate & " Zelle(n) mit doppelten Einträgen wurden markiert.", vbInformation
    Else
        MsgBox "Keine Duplikate gefunden.", vbInformation
    End If
    
    ' Zur Startzelle zurückkehren
    startZelle.Select
    
End Sub


Die Beispieldatei können Sie über den folgenden Link herunterladen.

 

Relevante Artikel

    Wir benutzen Cookies
    Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.