fusselfrei
Goto Top

Duplikate in Spalte markieren - unterschiedliche Duplikate in unterschiedlichen Farben (VBA Excel 2007)

Guten Tag zusammen!

Ich bitte um Hilfe bei folgender Fragestellung:

Eine Lösung zum farblichen Markieren von Duplikaten in einer Spalte (z.B. C) in z.B. rot ist beispielsweise:

Sub Doppelte_markieren_Spalte_C()

'angelehnt an: http://www.ms-office-forum.net/forum/sitemap/index.php?t-277131.html  

Dim lngZeile As Long
Dim lngEnde As Long
Dim i As Integer
    
lngEnde = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
For lngZeile = 1 To ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
    If Application.CountIf(Range("C1:C" & lngEnde), Range("C" & lngZeile)) > 1 Then  
        Range("C" & lngZeile).Interior.ColorIndex = 3  
    End If
Next lngZeile

End Sub

Ich möchte jedoch unterschiedliche Duplikate in unterschiedlichen Farben markieren, wie z.B.

PAT-001980 -> rot
PAT-001980 -> rot
PAT-001980 -> rot
PAT-001981
PAT-001982 -> gelb
PAT-001982 -> gelb

Vielen Dank im Voraus!

Fusselfrei

Content-Key: 177668

Url: https://administrator.de/contentid/177668

Printed on: April 26, 2024 at 16:04 o'clock

Mitglied: 76109
76109 Dec 14, 2011 at 19:32:11 (UTC)
Goto Top
Hallo Fusselfrei!

Sollte in etwa so gehen:
Sub Doppelte_markieren_Spalte_C()

'angelehnt an: http://www.ms-office-forum.net/forum/sitemap/index.php?t-277131.html  

    Dim lngZeile As Long
    Dim lngEnde As Long
    Dim strValue As String
    
    Dim objDupList As Object
    Dim arrFarben As Variant
    Dim intFarben As Integer
    
    arrFarben = Array(3, 5, 7, 4)	'Aufzählung der ColorIndex-Werte entsprechend anpassen  
    
    Set objDupList = CreateObject("Scripting.Dictionary")    'Liste der Duplikate (Key) mit ColorIndex (Item)  
    
    lngEnde = Cells(Rows.Count, 3).End(xlUp).Row
    
    Columns("C:C").Interior.ColorIndex = xlNone	'Alle Farben in Spalte C zurücksetzen  
    
    For lngZeile = 1 To lngEnde
        strValue = Cells(lngZeile, "C").Text  
        If strValue <> "" Then   	'Test Zelle nicht Leer  
            If Application.CountIf(Range("C1:C" & lngEnde), strValue) > 1 Then  
                If objDupList.Exists(strValue) Then	
                    Cells(lngZeile, "C").Interior.ColorIndex = objDupList.Item(strValue)  
                Else
                    Cells(lngZeile, "C").Interior.ColorIndex = arrFarben(intFarben)  
                    objDupList.Add strValue, arrFarben(intFarben)
                    intFarben = intFarben + 1
                    If intFarben > UBound(arrFarben) Then intFarben = 0
                End If
            End If
        End If
    Next
End Sub
Wobei sich die Farben wiederholen, sofern mehr Duplikate als Farben im Farben-Array (arrFarben) vorhanden sind.

Gruß Dieter
Member: Fusselfrei
Fusselfrei Dec 14, 2011 at 20:45:21 (UTC)
Goto Top
Hallo Dieter!

Das ist perfekt! face-smile


Vielen herzlichen Dank

Fusselfrei
Mitglied: 76109
76109 Dec 15, 2011 at 15:20:41 (UTC)
Goto Top
Hallo Fusselfrei!

Yepp, gern geschehenface-wink

Gruß Dieter
Member: SnackBar
SnackBar May 15, 2013 at 10:35:47 (UTC)
Goto Top
Hi zusammen,

ich würde gerne wissen was ich machen muss damit er mir wie folgt die Spalte markiert. face-smile

PAT-001980 -> rot
PAT-001980 -> rot
PAT-001980 -> rot
PAT-001981 -> grün
PAT-001982 -> rot
PAT-001982 -> rot
PAT-001983 -> grün
PAT-001983 -> grün
PAT-001984 -> rot
PAT-001985 -> grün

Also sobald ein Zahlenwechsel erfolgt die Farbe wechselt wird.

Danke

Gruß Andre