Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Doppelte Einträge suchen

Doppelte Einträge suchen
12.06.2006 11:52:20
Sebastian
Hallo Forum,
wie kann ich eine Liste, nach doppelten Einträgen durchsuchen lassen?
Die Einträge befinden sich in Spalte 2 meines Sheets und es können mehrere Tabellen vorhanden sein, da bis zu etwa 100000 Zeilen vorhanden.
Wie kann ich dann, wenn Einträge gefunden wurden, diese Doppelten auf einen Extra-Sheet vermerken lassen?
Danke schonmal im Voraus.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Einträge suchen
12.06.2006 18:46:51
fcs
Hallo Sebastian,
mit diesem Makro kann man Tabellen nach Mehrfacheinträgen in einer Spalte durchsuchen
Gruß
Franz

Sub DoppelteinSpalte()
' Sucht übere alle Blätter einer Mappe in einer Spalte doppelte Einträge und listet diese in einem separaten Blatt
Dim wb As Workbook, wks As Worksheet, wksdoppelte As Worksheet, Doppelt() As Boolean
Dim Finden As Range, Bereich As Range, Zeile As Long, wks2 As Worksheet, Doppeltes As Boolean
Dim J As Integer, K As Long, L As Integer, Zeile1 As Long, Spalte As Variant
Set wb = ActiveWorkbook
Spalte = 2 'Zu durchsuchende Spalte
' Tabellenblatt für Doppelte anlegen bzw. entleeren
Doppeltes = False
Zeile = 1 ' Startzeile für Einträge in Tabelle doppelte
For Each wks In wb.Sheets
If wks.Name = "Doppelte" Then
Set wksdoppelte = wks
Doppeltes = True
Exit For
End If
Next wks
If Doppeltes = True Then
With wksdoppelte
.Range(.Cells(2, 1), .Cells(.UsedRange.Row + .UsedRange.Rows.Count - 1, "C")).ClearContents
End With
Else
Set wksdoppelte = wb.Sheets.Add
With wksdoppelte
.Name = "Doppelte"
.Cells(Zeile, 1).Value = "Tabelle"
.Cells(Zeile, 2).Value = "Wert Spalte C"
.Cells(Zeile, 3).Value = "Zeile"
End With
End If
ReDim Doppelt(1 To 65536, 1 To wb.Sheets.Count) 'Feld für Prüfeinträge von doppelten Zellinhalten
'Blätter nacheinander in der Spalte durchsuchen
For J = 1 To wb.Sheets.Count
Set wks = wb.Sheets(J)
If wks.Name <> wksdoppelte.Name Then
'Blatt durchsuchen
For K = 1 To wks.UsedRange.Row + wks.UsedRange.Rows.Count - 2
If Doppelt(K, J) = False Then 'Prüfung ob Zelle schon als doppelt markiert
Suchen = wks.Cells(K, Spalte).Value
Set Bereich = wks.Range(wks.Cells(K + 1, Spalte), wks.Cells(wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1, Spalte))
Set Finden = Bereich.Find(what:=Suchen, LookIn:=xlValues, Lookat:=xlWhole)
Doppeltes = True
If Not Finden Is Nothing Then
Zeile1 = Finden.Row
With wksdoppelte
'Infos zu Zelle mit gesuchtem Wert eintragen
Zeile = Zeile + 1
.Cells(Zeile, 1) = wks.Name
.Cells(Zeile, 2) = Suchen
.Cells(Zeile, 3) = wks.Cells(K, (Spalte)).Row
Doppelt(K, J) = True
Doppeltes = False
'infos zu Doppelte eintragen und weitere doppelte suchen
Do
Doppelt(Finden.Row, J) = True
Zeile = Zeile + 1
.Cells(Zeile, 1) = wks.Name
.Cells(Zeile, 2) = Suchen
.Cells(Zeile, 3) = Finden.Row
Set Finden = Bereich.FindNext
Loop Until (Finden.Row = Zeile1 Or Finden Is Nothing)
End With
End If
End If
'restliche Blätter durchsuchen
For L = J + 1 To wb.Sheets.Count
Set wks2 = wb.Sheets(L)
If wks2.Name <> wksdoppelte.Name Then
Set Bereich = wks2.Range(wks2.Cells(1, Spalte), wks2.Cells(wks2.UsedRange.Row + wks2.UsedRange.Rows.Count - 1, Spalte))
Set Finden = Bereich.Find(what:=Suchen, LookIn:=xlValues, Lookat:=xlWhole)
If Not Finden Is Nothing Then
Zeile1 = Finden.Row
With wksdoppelte
If Doppeltes = True Then
Zeile = Zeile + 1
'Infos zu Zelle mit gesuchtem Wert eintragen
.Cells(Zeile, 1) = wks.Name
.Cells(Zeile, 2) = Suchen
.Cells(Zeile, 3) = wks.Cells(K, (Spalte)).Row
Doppelt(K, J) = True
Doppeltes = False
End If
'infos zu Doppelte eintragen und weitere doppelte suchen
Do
Doppelt(Finden.Row, L) = True
Zeile = Zeile + 1
.Cells(Zeile, 1) = wks2.Name
.Cells(Zeile, 2) = Suchen
.Cells(Zeile, 3) = Finden.Row
Set Finden = Bereich.FindNext
Loop Until Finden.Row = Zeile1 Or Finden Is Nothing
End With
End If
End If
Next L
Next K
End If
Next J
ReDim Doppelte(0)
MsgBox "Suchvorgang ist abgeschlossen"
End Sub

Anzeige
AW: Doppelte Einträge suchen
13.06.2006 07:15:03
Sebastian
Danke!
Funktioniert, dauert aber noch etwas lange, aber schon eine Idee zum verkürzen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige