Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Doppelte Einträge in ganzer Mappe markieren

Doppelte Einträge in ganzer Mappe markieren
didi
Hallo Experten,
benötige Abhilfe zum Thema doppelte Einträge markieren.
Bis jetzt habe ich nirgends was brauchbares gefunden :(
Habe in der Testdatei zweierlei Sachen probiert:
a) mit bedingter Formatierung (funktioniert nur innerhalb eines Registerblattes)
b) mit VBA
Beides läuft nicht. Ich benötige die Prüfung nach Dubletten (Spalte B) über die gesamte Arbeitsmappe (also eigentlich Registerblattübergreifend und sogar Namenunabhängig - da die Registerblätter Täglich hinzugefügt werden).
Hat jemand eine Idee?
Mit dem VBA hat es komischerweise kurz funktioniert - später plötzlich nicht mehr (ohne dass ich was verstellt hätte - nur nach öfteren Versuchen hat es irgendwannmal nicht mehr funktioniert).
Das mit dem VBA habe ich aus dem Netz - selbst kenne ich mich nicht aus.
Vielen Dank im Voraus für eure Hilfeversuche!
https://www.herber.de/bbs/user/76577.xls
Gruß
Didi
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
ganz kleiner Fehler?
13.09.2011 00:48:12
Erich
Hi Didi,
es könnte es sein, dass ziemlich vorn im Makro statt
For i = 19 To .Sheets.Count
das hier stehen sollte:
For i = 1 To .Sheets.Count
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: ganz kleiner Fehler?
13.09.2011 10:38:57
Didi
Hallo Erich,
danke für den Hinweis, dachte, dass auch bei I um den Zeilenanfang geht.
Nun es funktioniert noch nicht ganz richtig (siehe Link).
Die Zahl 125 und 126 wird nicht überall markiert und ist aber doppelt vorhanden.
Noch ne Idee?
https://www.herber.de/bbs/user/76587.xls
Gruß
Didi
Anzeige
falsches Goto
13.09.2011 13:49:15
Erich
Hi Didi,
solchen Code - ohne "Option Explicit" und Variablendeklarationen, dafür mit "... Goto xyz"-Anweisungen,
mag ich wirklich ganz besonders :-(
So sollte es gehen (immer noch ohne Option Explicit und nicht wirklich getestet,
aber mit übersichtlicheren Einrückungen):

' Option Explicit          ' Warum kein Option Explicit ?
Sub Dubletten()   ' Durchsucht eine Spalte in Tabellen der Mappe nach Mehrfacheinträgen
Spalte = 2     'Spalte die durchsucht werden soll
SpalteM = 10   'Spalte für Markierung der Mehrfacheinträge ("M" wird eingetragen)
Zeile1 = 19    'Zeile in der in jeder Tabelle mit dem Vergleich begonnen werden soll
Farbe = 3      'Colorindex für Füllfarbe bei Mehrfacheinträgen, 3 = Rot
With ActiveWorkbook
For i = 1 To .Sheets.Count
For ZeileI = Zeile1 To .Sheets(i).Cells(.Sheets(i).Rows.Count, Spalte).End(xlUp).Row
'Bereits markierte Zeile überspringen
If .Sheets(i).Cells(ZeileI, SpalteM)  "M" Then
wert = .Sheets(i).Cells(ZeileI, Spalte)
For j = i To .Sheets.Count              'Vergleich mit restlichen Zellen
'Startzeile für Vergleichstabelle setzen
If i = j Then
' steht Wert in letzter Zeile des Blattes i, wird ab nächstem Blatt gesucht
If ZeileI = _
.Sheets(i).Cells(.Sheets(i).Rows.Count, Spalte).End(xlUp).Row Then
ZeileJStart = 9 ^ 99
Else
ZeileJStart = ZeileI + 1
End If
Else
ZeileJStart = Zeile1
End If
For ZeileJ = ZeileJStart To _
.Sheets(j).Cells(.Sheets(j).Rows.Count, Spalte).End(xlUp).Row
'Prüfung ob Zeile bereits markiert als Mehrfacheintrag
If .Sheets(j).Cells(ZeileJ, SpalteM)  "M" Then
If wert = .Sheets(j).Cells(ZeileJ, Spalte) Then          'Wertevergleich
.Sheets(j).Cells(ZeileJ, SpalteM) = "M"
.Sheets(j).Rows(ZeileJ).Interior.ColorIndex = Farbe
Mehrfach = True
End If
End If
Next ZeileJ
Next j
If Mehrfach = True Then
.Sheets(i).Cells(ZeileI, SpalteM) = "M"   '1. Zeile mit Wert auch markieren
.Sheets(i).Rows(ZeileI).Interior.ColorIndex = Farbe
Mehrfach = False
End If
End If
Next ZeileI
Next i
End With
' Markierungen in SpalteM entfernen?
If MsgBox("Markierung 'M' in Spalte " & SpalteM & " entfernen?", _
vbYesNo + vbQuestion, "Mehrfacheinträge suchen") = vbYes Then
ActiveWorkbook.Sheets.Select
Columns(SpalteM).Select
Selection.ClearContents
Range("A1").Select
Sheets(1).Select
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: falsches Goto
13.09.2011 14:45:59
Didi
Hallo Erch,
besten DANK!!
Alles läuft wie geschmiert....
Für die goto-anweisungen möchte ich mich entschuldigen - wie gesagt, bin im VBA eine (noch) NULL (Code übernommen - soll aber nicht als Entschuldigung aufgefasst werden).
Für mich nach wie vor "schwarze Magie".
Noch eine Frage hätte ich...
...lässt sich die Markierung mittels eines anderen Makros dann auch wieder löschen?
Teifste Verbeugung meinerseits... ;)
Grüße
Didi
Anzeige
Farbe wieder löschen
13.09.2011 16:36:30
Erich
Hi Didi,
nur so ein Gedanke: Was passiert, wenn du vorn im Makro
Farbe = xlColorIndexNone
statt
Farbe = 3
schreibst?
Dann brauchst du kein neues Makro. :-)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Farbe wieder löschen
13.09.2011 17:19:33
Didi
Hi Erich,
hm... im Prinzip könnte es funktionieren, doch wenn ich die Dubletten gefunden habe und entfernt habe, dann kann er mir das nicht mehr "zurücksetzen", denn die Dubletten fehlen ja.
Da müsste was hin, was alles was rot ist, einfach auf farblos stellt (über alle Blätter hinweg).
Danke dir für den guten Gedanken.
Gruß
Didi
Anzeige
Farbe löschen
13.09.2011 20:32:23
Erich
Hi Didi,
eine Möglichkeit (die auch manuell machbar wäre, einfach "Bearbeiten - Ersetzen", Formate festlegen):

Sub FarbeWeg()   ' Löscht (rote) Hintergrundfarbe
Dim wks As Worksheet
With Application.FindFormat
.Clear
With .Interior
.PatternColorIndex = xlAutomatic
.ColorIndex = 3
End With
End With
With Application.ReplaceFormat
.Clear
.Interior.Pattern = xlNone
For Each wks In Worksheets
wks.Cells.Replace What:="", Replacement:="", _
LookAt:=xlPart, SearchFormat:=True, ReplaceFormat:=True
Next wks
Application.FindFormat.Clear
.Clear
End With
End Sub
In der Beispielmappe gibt es auch bedingte Formatierungen. Die werden hiermit natürlich nicht bearbeitet.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Doppelte Einträge in Excel markieren


Schritt-für-Schritt-Anleitung

Um doppelte Einträge in einer gesamten Excel-Arbeitsmappe zu markieren, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf "Einfügen" und dann auf "Modul", um ein neues Modul zu erstellen.

  3. Füge den folgenden VBA-Code in das Modul ein:

    Sub Dubletten()
        Dim Spalte As Integer
        Dim SpalteM As Integer
        Dim Zeile1 As Integer
        Dim Farbe As Integer
        Dim wert As Variant
        Dim Mehrfach As Boolean
        Dim i As Integer, j As Integer, ZeileI As Integer, ZeileJ As Integer, ZeileJStart As Integer
    
        Spalte = 2     ' Spalte die durchsucht werden soll
        SpalteM = 10   ' Spalte für Markierung der Mehrfacheinträge
        Zeile1 = 19    ' Zeile in der in jeder Tabelle mit dem Vergleich begonnen werden soll
        Farbe = 3      ' Colorindex für Füllfarbe bei Mehrfacheinträgen, 3 = Rot
    
        With ActiveWorkbook
            For i = 1 To .Sheets.Count
                For ZeileI = Zeile1 To .Sheets(i).Cells(.Sheets(i).Rows.Count, Spalte).End(xlUp).Row
                    If .Sheets(i).Cells(ZeileI, SpalteM) <> "M" Then
                        wert = .Sheets(i).Cells(ZeileI, Spalte)
                        For j = i To .Sheets.Count
                            If i = j Then
                                If ZeileI = .Sheets(i).Cells(.Sheets(i).Rows.Count, Spalte).End(xlUp).Row Then
                                    ZeileJStart = 9 ^ 99
                                Else
                                    ZeileJStart = ZeileI + 1
                                End If
                            Else
                                ZeileJStart = Zeile1
                            End If
                            For ZeileJ = ZeileJStart To .Sheets(j).Cells(.Sheets(j).Rows.Count, Spalte).End(xlUp).Row
                                If .Sheets(j).Cells(ZeileJ, SpalteM) <> "M" Then
                                    If wert = .Sheets(j).Cells(ZeileJ, Spalte) Then
                                        .Sheets(j).Cells(ZeileJ, SpalteM) = "M"
                                        .Sheets(j).Rows(ZeileJ).Interior.ColorIndex = Farbe
                                        Mehrfach = True
                                    End If
                                End If
                            Next ZeileJ
                        Next j
                        If Mehrfach = True Then
                            .Sheets(i).Cells(ZeileI, SpalteM) = "M"
                            .Sheets(i).Rows(ZeileI).Interior.ColorIndex = Farbe
                            Mehrfach = False
                        End If
                    End If
                Next ZeileI
            Next i
        End With
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf "Ausführen" klickst.

Dieses Skript durchsucht die angegebene Spalte (in diesem Fall Spalte B) in allen Arbeitsblättern nach doppelten Einträgen und markiert sie farblich.


Häufige Fehler und Lösungen

  • Problem: Das Makro funktioniert nicht wie erwartet.

    • Lösung: Stelle sicher, dass die Startzeile und die zu durchsuchende Spalte korrekt festgelegt sind.
  • Problem: Einige doppelte Werte werden nicht markiert.

    • Lösung: Überprüfe, ob in den Zellen zusätzliche Leerzeichen oder unterschiedliche Groß-/Kleinschreibung vorhanden sind, die den Vergleich beeinflussen könnten.

Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch die Bedingte Formatierung nutzen. Diese funktioniert jedoch nur innerhalb eines einzelnen Arbeitsblatts:

  1. Wähle die Zellen aus, die du überprüfen möchtest.

  2. Gehe zu Start -> Bedingte Formatierung -> Regel erstellen.

  3. Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“ und füge folgende Formel ein:

    =ZÄHLENWENN(A:A;A1)>1
  4. Setze das gewünschte Format und klicke auf „OK“.

Diese Methode ist nützlich, wenn du nur in einem Blatt arbeiten möchtest, aber nicht für die gesamte Arbeitsmappe.


Praktische Beispiele

  • Beispiel 1: Du hast eine Liste von Kundennamen in Spalte B in mehreren Blättern, und du möchtest sicherstellen, dass keine Namen doppelt vorhanden sind. Verwende das oben genannte VBA-Skript, um diese Namen zu überprüfen und farblich zu markieren.

  • Beispiel 2: Wenn du eine Liste von Produkten in Spalte C hast, kannst du das gleiche Skript anpassen, um die Produkte auf Dubletten zu überprüfen.


Tipps für Profis

  • Verwende Option Explicit: Füge Option Explicit am Anfang deines Makros hinzu, um sicherzustellen, dass du alle Variablen deklarierst. Dies hilft, Fehler zu vermeiden.

  • Speichere deine Arbeitsmappe regelmäßig: Vor dem Ausführen von Makros ist es ratsam, eine Sicherungskopie deiner Arbeitsmappe zu erstellen, um Datenverlust zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich die Markierung der doppelten Einträge wieder entfernen?
Du kannst die Hintergrundfarbe der markierten Zellen mit einem weiteren Makro zurücksetzen oder manuell über „Bearbeiten - Ersetzen“ die Formatierung entfernen.

2. Funktioniert dieses Verfahren in Excel 2016 und neueren Versionen?
Ja, das VBA-Skript sollte in Excel 2016 und neueren Versionen problemlos funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige