Knacknuss Doppelte Zeilen markieren

Hallo Experten

Ich suche schon seit 4 Tagen nach einer Lösung im WWW und werde nicht fündig.

Ich habe in einer Excel Tabelle eine Adressliste.
Spalte A1 = Name B1 = Vorname C1 = Adresse

Nun möchte ich das ganze Tabellenblatt auf doppelte Einträge in den ZEILEN überprüfen und die doppelten jeweils per Klick auf den Button markieren. Wie gesagt, NICHT die Spalten sondern die ZEILEN.

D.H.

Ich habe 2mal Max Muster Teststrasse untereinander in Zeile 1 und 2

Dann sollte es nach klick diese beiden Zeilen farbig markieren, aber ich müsste dann auch per Klick die Farbe wieder rückgängig machen können.

Kennt jemand eine Lösung?

LG Sascha

Hallo Sascha,

Ich suche schon seit 4 Tagen nach einer Lösung im WWW und
werde nicht fündig.

und da gibst du nach vier Tagen schon auf? Dickes Minus bei „Zähigkeit“ :smile:)

Ich habe in einer Excel Tabelle eine Adressliste.
Spalte A1 = Name B1 = Vorname C1 = Adresse

Bitte, Zelle, Zeile, Spalte ist unterschiedlich in Excel.
Sag das bitte genau. Hier gehts noch, jeder kann erahnen was du
willst/meinst aber wenn du das in einer längeren Anfrage laufend wervechslst *gg* wird’s echt schwierig herauszufinden was du meinst.

Schreib’s doch z.B. so, ich hab in Zeile 1 die folgenden Spaltentitel:
A1 = Name B1 = Vorname C1 = Adresse

Nun möchte ich das ganze Tabellenblatt auf doppelte Einträge
in den ZEILEN überprüfen und die doppelten jeweils per Klick
auf den Button markieren.

Okay.

Wie gesagt, NICHT die Spalten
sondern die ZEILEN.

? Warum sollte ich Spalten markieren wenn doppelte Zeileneinträge vorhanden sind?

Ich habe 2mal Max Muster Teststrasse untereinander in Zeile 1
und 2

Dann sollte es nach klick diese beiden Zeilen farbig
markieren, aber ich müsste dann auch per Klick die Farbe
wieder rückgängig machen können.

Das ist korrekt und verständlich :smile:

Ich sehe da schon verschiedene Lösungsmöglichkeiten.
Eine Frage hätte ich noch, wieviele datensätze sind es und wieviele könnten es mal werden?

Da langt mir die ca. Größenordnung dicke, 1000, 10000, 100000 oder mehr? Die Frage zielt auf der Auswahl der dann schnellsten Lösungsmethode.

PS: wegen des „Milch“-Projektes, mit welchen XL-Versionen arbeitet ihr? Denn in XL 2000 stieß ich auf sehr unerwartete Schwierigkeiten.
In anderen (höheren) XL-Versionen gibt es die Problematik nicht.
Zu den Schwierigkeiten, siehe meinen Beitrag/Anfrage im Excelbrett (tabellenkalkulation).

Gruß
Reinhard

und da gibst du nach vier Tagen schon auf? Dickes Minus bei
„Zähigkeit“ :smile:)

Kann sein… Mein Problem ist eher die Zeit :smile:

Bitte, Zelle, Zeile, Spalte ist unterschiedlich in Excel.
Sag das bitte genau.

Ja stimmt da habe ich es ein wenig zu undeutlich geschrieben

Schreib’s doch z.B. so, ich hab in Zeile 1 die folgenden
Spaltentitel:
A1 = Name B1 = Vorname C1 = Adresse

So hab ichs gemeint :smile:

? Warum sollte ich Spalten markieren wenn doppelte
Zeileneinträge vorhanden sind?

Habe im WWW nur Lösungen für Spalten gefunden…

Ich sehe da schon verschiedene Lösungsmöglichkeiten.
Eine Frage hätte ich noch, wieviele datensätze sind es und
wieviele könnten es mal werden?

Da langt mir die ca. Größenordnung dicke, 1000, 10000, 100000
oder mehr? Die Frage zielt auf der Auswahl der dann
schnellsten Lösungsmethode.

Momentan sind es ca 80 Einträge, Können aber bis zu 800 werden

PS: wegen des „Milch“-Projektes, mit welchen XL-Versionen
arbeitet ihr? Denn in XL 2000 stieß ich auf sehr unerwartete
Schwierigkeiten.

Ich habe zuHause XL 2002 und im Geschäft ist es die nuere Version die bei Windows 7 dabei ist

Lieber Gruss
Sascha

Da langt mir die ca. Größenordnung dicke, 1000, 10000, 100000
oder mehr? Die Frage zielt auf der Auswahl der dann
schnellsten Lösungsmethode.

Momentan sind es ca 80 Einträge, Können aber bis zu 800 werden

Hallo Sascha,

teste mal diese prozedur:

Option Explicit

Sub Doppelt()
Dim Zei As Long
Static EinAus As Boolean
EinAus = Not EinAus
Cells.Interior.ColorIndex = xlNone
If EinAus = False Then Exit Sub
Zei = Cells(Rows.Count, 1).End(xlUp).Row
Range("AB2:AB" & Zei).Formula = "=""#""&A2&""#""&B2&""#""&C2&""#"""
Range("AA2:AA" & Zei).Formula = "=IF(COUNTIF(" & Range("AB2:AB" & Zei).Address & \_
 ",AB2)\>1,"""",1)"
Range("AA2:AA" & Zei).Value = Range("AA2:AA" & Zei).Value
On Error Resume Next
Range("AA2:AA" & Zei).SpecialCells(xlCellTypeBlanks).EntireRow.Interior.ColorIndex = 34
On Error GoTo 0
Range("AA2:AB" & Zei).ClearContents
End Sub

Hallo Sascha,

teste mal diese prozedur:

Hallo Reinhard, Super es funktioniert :–) vielen Dank!!!

Kann ich diesen Code auch in einer Tabelle mit bis zu 3000 Datensätzen einfügen? Funktionierts dann noch?

Und kannst Du mir erklären nach welchen Kriterien nun gesucht wird? Nach Spalte A B und C ?

Ich habe den Code hier mal nach C H und I abgeändert. Hat dies einen einfluss auf die Kriterien?

Range("AB2:AB" & Zei).Formula = "=""#""&C2&""#""&H2&""#""&I2&""#"""

Lieber Gruss
Sascha

Hallo Sascha,

Kann ich diesen Code auch in einer Tabelle mit bis zu 3000
Datensätzen einfügen? Funktionierts dann noch?

Ja.

Und kannst Du mir erklären nach welchen Kriterien nun gesucht
wird? Nach Spalte A B und C ?

? Gewissermaßen ja. In Spalte AB werden die Werte aus Ax, Bx, Cx zusammengefügt, getrennt durch „#“.
In Spalte AA wird dann durch Zählenwenn geprüft wie oft der Wert von Abx in AB vorkommt. Ist das mehr als einmal der Fall so wird in AAx nix reingeschrieben ansonsten eine 1.

Dann werden die formeln in AA durch die Werte erstezt, genauso wie wenn du eine Spalte mit Formeln kopierst, dann Bearbeiten—Inhalte einfügen—Werte auswählst.

Mit Specialcells das mir alle Zellen „bündelt“ die leer sind färbe ich dann die beteiligten Zeilen.

Ich habe den Code hier mal nach C H und I abgeändert. Hat dies
einen einfluss auf die Kriterien?

Range(„AB2:AB“ & Zei).Formula =
„=“"#""&C2&""#""&H2&""#""&I2&""#"""

Prinzipiell ist das egal.
In AB muß die Formel stehen die als Ergebnis die „zusammenfügung“ der relevanten zellen hat.
Wie die heißen, also welche Spalten ist egal.

Daß da das Zeichen „#“ miteingefügt wird hat nur den einzigen Sinn um so Einträge:

Name Vorname Adresse
Reinhard Schokoladenstraße/Ecke abgebissen
 Reinhard Schokoladenstraße/Ecke abgebissen

unterscheiden zu können.

Gruß
Reinhard

Super. Soweit funktionierts…

Nur noch ein Problem

Meine Tabelle ist mit einem Blattschutz versehen.
Habe am Anfang des Sub() diese Zeile eingefügt:

ActiveSheet.Protect "snoopy"

und ganz am Schluss nochmals. Nun wenn ich 1mal klicke markierts mir die doppelten Zeilen, bei weiterem deaktivierts die Farbe wieder… Super, Aber der Blattschutz ist dann nicht mehr aktiviert.

Wo muss ich die Zeile

ActiveSheet.Protect "snoopy"

noch einfügen?

hier mein code:

Private Sub CBDoppelt\_Click()
ActiveSheet.Unprotect "snoopy"
Dim Zei As Long
Static EinAus As Boolean
EinAus = Not EinAus
Cells.Interior.ColorIndex = xlNone
If EinAus = False Then Exit Sub
Zei = Cells(Rows.Count, 1).End(xlUp).Row
Range("AB2:AB" & Zei).Formula = "=""#""&C2&""#""&H2&""#""&I2&""#"""
Range("AA2:AA" & Zei).Formula = "=IF(COUNTIF(" & Range("AB2:AB" & Zei).Address & \_
 ",AB2)\>1,"""",1)"
Range("AA2:AA" & Zei).Value = Range("AA2:AA" & Zei).Value
On Error Resume Next
Range("AA2:AA" & Zei).SpecialCells(xlCellTypeBlanks).EntireRow.Interior.ColorIndex = 34
On Error GoTo 0
Range("AA2:AB" & Zei).ClearContents
ActiveSheet.Protect "snoopy"
End Sub

Nachtrag
Und wie erreiche ich dass die Tabelle zu den markierten Zeilen „springt“ ?

Das wäre noch perfekt gelöst, damit ich nicht die ganze Tabelle nach unten Scrollen muss…

Meine Tabelle ist mit einem Blattschutz versehen.
Habe am Anfang des Sub() diese Zeile eingefügt:

ActiveSheet.Protect „snoopy“

und ganz am Schluss nochmals. Nun wenn ich 1mal klicke
markierts mir die doppelten Zeilen, bei weiterem deaktivierts
die Farbe wieder… Super, Aber der Blattschutz ist dann nicht
mehr aktiviert.

hallo Sascha,

ich nehme an so:

Private Sub CBDoppelt\_Click()
ActiveSheet.Unprotect "snoopy"
Dim Zei As Long
Static EinAus As Boolean
EinAus = Not EinAus
Cells.Interior.ColorIndex = xlNone
**If EinAus = False Then  
 ActiveSheet.Protect "snoopy"  
 Exit Sub  
End If** Zei = Cells(Rows.Count, 1).End(xlUp).Row
Range("AB2:AB" & Zei).Formula = "=""#""&C2&""#""&H2&""#""&I2&""#"""
Range("AA2:AA" & Zei).Formula = "=IF(COUNTIF(" & Range("AB2:AB" & Zei).Address & \_
 ",AB2)\>1,"""",1)"
Range("AA2:AA" & Zei).Value = Range("AA2:AA" & Zei).Value
On Error Resume Next
Range("AA2:AA" & Zei).SpecialCells(xlCellTypeBlanks).EntireRow.Interior.ColorIndex = 34
On Error GoTo 0
Range("AA2:AB" & Zei).ClearContents
ActiveSheet.Protect "snoopy"
End Sub

Gruß
Reinhard

Ja genau. Das wars :smile:
Cool *gg*

Daaankkeee

Und wie erreiche ich dass die Tabelle zu den markierten Zeilen
„springt“ ?
Das wäre noch perfekt gelöst, damit ich nicht die ganze
Tabelle nach unten Scrollen muss…

Hallo Sascha,

ich glaub du übersiehst da was.
Angenommen du hast da 3000 Datenzeilen. Lassen wir mal Mehrfachvorkommende Datenzeilen als zweimal weg so können doch da 100 „Doppler“ sein. Was nützt es dir dann zum ersten Doppler bzw. von oben gesehen zur ersten gefärbten Zelle/Zeile zu hüpfen?

Machen, also im Code, kann man das, daß dann z.B. der erste Doppleer in Zeile 978 „angehüpft“ wird. Und wie dann weiter?

Gruß
Reinhard

ich glaub du übersiehst da was.
Angenommen du hast da 3000 Datenzeilen. Lassen wir mal
Mehrfachvorkommende Datenzeilen als zweimal weg so können doch
da 100 „Doppler“ sein. Was nützt es dir dann zum ersten
Doppler bzw. von oben gesehen zur ersten gefärbten Zelle/Zeile
zu hüpfen?

Machen, also im Code, kann man das, daß dann z.B. der erste
Doppleer in Zeile 978 „angehüpft“ wird. Und wie dann weiter?

Ja da hast Du recht, habe nicht so weit überlegt.
Was meinst Du wenn man eine MSGBox einfügt, „Doppelte Einträge gefunden, bitte hinunterscrollen“

geht das… falls gefunden dann msgbox?

oder wenn das nicht geht, dann eine msgbox: „Falls doppelte Einträge gefunden wurden, sind diese farbig markiert. Bitte hinunterscrollen und überprüfen“

Sascha

Was meinst Du wenn man eine MSGBox einfügt, „Doppelte Einträge
gefunden, bitte hinunterscrollen“

geht das… falls gefunden dann msgbox?

Hallo sascha,

ungetestet:

Private Sub CBDoppelt\_Click()
ActiveSheet.Unprotect "snoopy"
Dim Zei As Long
Static EinAus As Boolean
EinAus = Not EinAus
Cells.Interior.ColorIndex = xlNone
If EinAus = False Then
 ActiveSheet.Protect "snoopy"
 Exit Sub
End If
Zei = Cells(Rows.Count, 1).End(xlUp).Row
Range("AB2:AB" & Zei).Formula = "=""#""&C2&""#""&H2&""#""&I2&""#"""
Range("AA2:AA" & Zei).Formula = "=IF(COUNTIF(" & Range("AB2:AB" & Zei).Address & \_
 ",AB2)\>1,"""",1)"
Range("AA2:AA" & Zei).Value = Range("AA2:AA" & Zei).Value
On Error Resume Next
Range("AA2:AA" & Zei).SpecialCells(xlCellTypeBlanks).EntireRow.Interior.ColorIndex = 34
**If Err.Number = 0 Then MsgBox "Doppelte gefunden"**
On Error GoTo 0
Range("AA2:AB" & Zei).ClearContents
ActiveSheet.Protect "snoopy"
End Sub

Gruß
Reinhard

Perfekt :smile:)

Vielen lieben Dank :smile:

P.S. Bist Du am Milchprojekt noch dran? resp. hast Du meine Nachricht erhalten?

Liebe Grüsse
Sascha