Try
Sub test()
Dim r As Range
With CreateObject("Scripting.Dictionary")
For Each r In Range("i1", Range("i" & Rows.Count).End(xlUp))
If r.Interior.ColorIndex = 3 Then
.Item(r.Value) = Empty
Else
If .exists(r.Value) Then r.Interior.ColorIndex = 3
End If
Next
End With
End Sub
or not first appeared cell is colored.
Sub test()
Dim r As Range, ff As String, x(), n As Long
Application.ScreenUpdating = False
With Application.FindFormat
.Clear
.Interior.ColorIndex = 3
End With
With Range("i1", Range("i" & Rows.Count).End(xlUp))
Set r = .Find("*", searchformat:=True)
If Not r Is Nothing Then
ff = r.Address
Do
n = n + 1: ReDim Preserve x(1 To n): x(n) = r.Value
Set r = Columns("i").Find("*", r, searchformat:=True)
Loop Until ff = r.Address
.AutoFilter 1, x, 7
.Offset(1).Resize(.Rows.Count - 1).Interior.ColorIndex = 3
.AutoFilter
End If
End With
Application.ScreenUpdating = True
End Sub
Bookmarks