2.1k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

habe folgenden Code, der Duplikate einer Spalte "E" farblich markiert:
Public Sub Doppelte_Rot()
Dim lngZeile As Long
Dim lngZeilenSprung As Long
Dim strSuchwert As String

lngZeile = Cells(Rows.Count, 5).End(xlUp).Row

For lngZeilenSprung = lngZeile To 8 Step -1
strSuchwert = Cells(lngZeilenSprung, 5).Value
If Application.WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(lngZeile, 5)), strSuchwert) <> 1 Then
Cells(lngZeilenSprung, 5).Interior.ColorIndex = 45
End If
Next lngZeilenSprung

End Sub

Ich möchte aber zusätzlich die Spalte "F" einbeziehen und die Markierung nur setzen, wenn der Datensatz sowohl in "E" als auch "F" identisch ist. Wie müsste der Code erweitert werden?
Danke und Gruß
Andreas

9 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
If Application.WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(lngZeile, 5)), strSuchwert) <> 1 and (lngZeile, 5)=(lngZeile, 6) then

Gruß hajo
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Hajo,

da muss noch ein Fehler drinstecken, kriege die Zeile rot eingefäbt, hab aber nicht auffälliges bemerkt....?
Andreas
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
dazu kann ich nichts schreiben, was wohl daran liegt das ich die Datei nicht sehe.
Ich habe nur die Bedingung eingebaut das E und F gleich.

Gruß Hajo
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Hajo,

ich weiß nicht ob wir uns richtig verstanden haben. Die Farbmarkierung soll nur dann gesetzt werden wenn zwei unterschiedliche Datensätze mindestens in den Spalten "E" und "F" gleich sind, dabei können "E" und "F" durchaus verschiedene Inhalte haben.
Andreas
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Andreas,

das habe ich nicht so interpretiert.
sowohl in "E" als auch "F" identisch ist

habe ich angenommen in der gleichen Zeile.
Die neue Aufgabe ist mir nicht klar.

Gruß Hajo
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,

A B C D E F

x y y d 2 8
d f f 3 4 8
d g 3 s 2 8

in diesem Bespiel sollen der erste und dritte Datensatz eingefärbt werden, das sie in E und F gleiche Inhalte habe.
Gruß
Andreas
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,
ich habs mal mit folgender Variante probiert, die mir logisch erscheint, aber nicht läuft....

Public Sub Doppelte_Rot()
Dim lngZeile As Long
Dim lngZeilenSprung As Long
Dim strSuchwert As String, strSuchwert1 As String

lngZeile = Cells(Rows.Count, 5).End(xlUp).Row

For lngZeilenSprung = lngZeile To 8 Step -1
strSuchwert = Cells(lngZeilenSprung, 5).Value
strSuchwert1 = Cells(lngZeilenSprung, 6).Value

If Application.WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(lngZeile, 5)), strSuchwert) <> 1 _
And CountIf(Range(Cells(1, 6), Cells(lngZeile, 6)), strSuchwert1) <> 1 Then

Cells(lngZeilenSprung, 5).Interior.ColorIndex = 45
End If
Next lngZeilenSprung

End Sub

Der Fehler muss irgendwie in der Funktion liegen...???
Andreas
0 Punkte
Beantwortet von
Hallo Andreas,

du musst die Inhalte beider Spalten miteinander kombinieren um sie zu vergleichen zu können. Probier mal folgendes Makro:

Public Sub DoppeltRot()

Dim test As String

For Each i In Selection.Rows
If InStr(1, test, i.Cells(1) & i.Cells(2)) > 0 Then
i.Interior.ColorIndex = 45
Else
test = test + i.Cells(1) & i.Cells(2) & ";"
End If
Next i

End Sub
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hi King,

prima Code. Funktioniert einwandfrei, wobei allerdings im Unterschied zu meiner ersten Variante nur die Duplikate eingefärbt werden, nicht aber auch die "Originale". Aber das ist vlt. sogar noch übersichtlicher.
Super, vielen Dank!!
Andreas
...