Doppelte Einträge in Excel suchen

Hallo, weiss jemand wie ich in Excel doppelte Einträge suchen und finden lassen kann ? Ich hab eine Spalte makiert und dann sortiert. Jetzt ist es ganz schön nervig diese manuell nach doppelten Einträgen zu durchsuchen.

Danke und Gruß Euch allen
Frank

Hallo Frank,

Hallo, weiss jemand wie ich in Excel doppelte Einträge suchen
und finden lassen kann ? Ich hab eine Spalte makiert und dann
sortiert. Jetzt ist es ganz schön nervig diese manuell nach
doppelten Einträgen zu durchsuchen.

was soll denn mit den doppelten Einträgen passieren

für den Fall, dass die doppelten Einträge in der Liste nur einmal auftreten sollen

wähle Menü Daten, Filter, Spezialfilter und dann die Option anklicken

Gruß
Marion

Hallo Marion,

die Duplikate sollten mit xxx versehen werden. Aber nicht die in einer ganzen Zeile, sondern nur in einer Spalte.

Gruß Frank

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Frank,

die Duplikate sollten mit xxx versehen werden. Aber nicht die
in einer ganzen Zeile, sondern nur in einer Spalte

das ist ziemlich einfach mit einer Formel zu lösen.

Annahme: die zu prüfenden Daten sind in Spalte A, beginnend in A1
füge dann folgende Formel in die oberste Zelle der Spalte für die Markierungen (z. B. in B1) ein:

=WENN(ZÄHLENWENN(A:A;A1)>1;„xxx“;"")

Diese Formel nach unten ausfüllen.

Zusätzlich kannst du die entsprechende Zelle farblich makieren. Dazu folgendes Makro:

Sub DoppelteMarkieren()
Dim intRow As Integer
intRow = 2
Do Until IsEmpty(Cells(intRow, 1))
If Application.CountIf(Columns(„A“), Cells(intRow, 1)) > 1 Then
Cells(intRow, 1).Interior.ColorIndex = 6
End If
intRow = intRow + 1
Loop
End Sub

Gruß
Marion

1 „Gefällt mir“

Sub DoppelteMarkieren()
Dim intRow As Integer
intRow = 2
Do Until IsEmpty(Cells(intRow, 1))
If Application.CountIf(Columns(„A“), Cells(intRow, 1))
> 1 Then
Cells(intRow, 1).Interior.ColorIndex = 6
End If
intRow = intRow + 1
Loop
End Sub

Hallo Marion,
du kriegst ab Zeile 32xxx einen Überlauffehler.
Also so lösen:

Dim lngRow As Long

Tja, wenn Zelle A65536 (oder was weiß ich welche Zeile bei Excel2007) belegt ist, knallts auch, weil die Schleife in Zelle A65537 hüpfen will :smile:

Deshalb würde ich das so angehen (IIf gibt es ab XL2000, bei XL97 muß man halt normales If o.ä. nehmen)

Option Explicit

Sub tt()
Dim lngRow As Long, lngR As Long
lngRow = IIf(Cells(Rows.Count, 1) "", Rows.Count, Cells(Rows.Count, 1).End(xlUp).Row)
For lngR = 2 To lngRow
 ' Code
Next lngR
End Sub

Auch da gibt es noch einen „Fehler“ wenn Spalte A leer ist oder nur A1 gefüllt, in beiden Fällen ist lngRow 1. Dies muß man ggfs. auch noch abfangen, wenn dies eine Rolle spielen könnte.

Und beim Code posten, schau dir mal unter dem Antwortfenster die Hilfe zu dem pre-Tag an, damit bleiben Codeeinrückungen erhalten. Auch wichtig wenn man Tabellenausschnitte reinstellt, oder für Spielereien *gg*

 Lieben Gruß
 Reinhard
1 „Gefällt mir“

herzlichen Dank Reinhard, das ist prompte Hilfe

 ich freu mich schon auf die nächste Lektion




Mit Überlaufen 
 werd ich mich wohl bald
 etwas näher beschäftigen

Ganz liebe Grüße
Marion

Hallo Marion,
du kriegst ab Zeile 32xxx einen Überlauffehler.
Also so lösen:

Dim lngRow As Long

Lieben Gruß
Reinhard

A propos Zellbereich erweitern:
Irgendwo unter http://www.excelformeln.de habe ich, glaube ich, mal etwas zum Aufstocken der Zeilen und Spalten gesehen … leider nur aus dem Augenwinkel, ich suchte was anderes.

Aber ich schätze, diese Formel hilft Frank auch weiter:
http://www.excelformeln.de/formeln.html?welcher=46
Der Kommentar dazu ist: „in wie vielen Zeilen (nicht Zellen) kommt Suchbegriff vor“

Gruß Verena

Sehr konfortabel (Beispiel für Datensatz über Spalten A,B,C)
___________________________________________
Option Explicit

Public Sub DuplikateLoeschenSort()
Dim xlWS As Worksheet
Dim xlRange As Range

Dim intColsCnt As Integer
Dim lngRowsCnt As Long

Dim intCol As Integer
Dim lngRow As Long
Dim lngRowsDel As Long
Dim boolDuplikat As Boolean

Application.ScreenUpdating = False

Set xlWS = ActiveSheet

With xlWS
intColsCnt = .UsedRange.Columns.Count
lngRowsCnt = .UsedRange.Rows.Count

Set xlRange = _
.Range(.Cells(1, 1), .Cells(lngRowsCnt, intColsCnt))

xlRange.Sort Key1:=.Range(„A1“), Order1:=xlAscending, _
Key2:=.Range(„B1“), Order2:=xlAscending, _
Key3:=.Range(„C1“), Order3:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End With

xlWS.Range(„A1“).Select

lngRowsDel = 0
For lngRow = lngRowsCnt To 2 Step -1
boolDuplikat = True

With xlWS
For intCol = 1 To intColsCnt
If .Cells(lngRow, intCol).Value _
.Cells(lngRow - 1, intCol).Value Then
boolDuplikat = False
Exit For
End If
Next intCol

If boolDuplikat Then
.Rows(lngRow).EntireRow.Delete
lngRowsDel = lngRowsDel + 1
End If
End With
Next lngRow

Application.ScreenUpdating = True

MsgBox "Es wurden " & lngRowsDel & " doppelte " & _
„Datensätze gelöscht!“, vbOKOnly + vbInformation, _
Title:=„Doppelte Datensätze löschen“

Set xlRange = Nothing
Set xlWS = Nothing
End Sub

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Natürlich schreibt man das „komfortabel“
Tschuldigung

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]