Sub test()
Dim r As Range, dic As Object, w
Set dic = CreateObject("Scripting.Dictionary")
dic.CompareMode = 1
With Range("c2", Range("c" & Rows.Count).End(xlUp))
.Interior.ColorIndex = xlNone
For Each r In .Cells
If Not dic.exists(r.Value) Then
ReDim w(1 To 2)
Set w(1) = r
With Application.WorksheetFunction
w(2) = Array(.RandBetween(0, 255), .RandBetween(0, 255), .RandBetween(0, 255))
End With
dic(r.Value) = w
Else
w = dic(r.Value)
r.Interior.Color = RGB(w(2)(0), w(2)(1), w(2)(2))
If Not IsEmpty(dic(r.Value)(1)) Then dic(r.Value)(1).Interior.Color = RGB(w(2)(0), w(2)(1), w(2)(2))
w(1) = Empty: dic(r.Value) = w
End If
Next
End With
End Sub