试试这个简单的代码,并根据您的需要进行修改。它非常自我解释,
Sub dupColors()
Dim i As Long, cIndex As Long
cIndex = 3
Cells(1, 1).Interior.ColorIndex = cIndex
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = Cells(i + 1, 1) Then
Cells(i + 1, 1).Interior.ColorIndex = cIndex
Else
If Cells(i + 1, 1) <> "" Then
cIndex = cIndex + 1
Cells(i + 1, 1).Interior.ColorIndex = cIndex
End If
End If
Next i
End Sub
Gowtham的解决方案仅针对数字并使用VBA。我有一个简单的解决方法,适用于任何类型的数据,不需要VBA。
我们可以使用另一个列,使用公式为所有重复项生成唯一值,并为该列使用“Conditional Formatting
> Color Scales
”。截图如下。
你可以使用的公式是
"=ROW(INDEX(A$2:A$12,MATCH(A2,A$2:A$12,0)))"
在上面的公式中,A $ 2:A $ 12是我们想要搜索重复项的范围。
该公式基本上搜索给定范围中重复值的第一个实例,并输入该第一个实例的行号。
P.S:在上面的公式中,范围“A $ 2:A $ 12”是固定范围,使用表中的上述公式更简单,因为表范围是动态的
使用Table的另一个好处是我们甚至可以对数据进行排序以将重复值组合在一起
=ROW(INDEX([Column1],MATCH(A2,[Column1],0)))
Gowtham的答案很棒,如果没有他们,我不会想到下面的内容!我对独特的颜色分配有同样的需求,但是,我需要比colorindex提供的56种颜色更多的方差,所以我稍微修改了Gowtham的代码,通过使用RandBetween和RGB通过随机红色创建随机颜色来提供更多的可变性,蓝色和绿色值。
我将颜色范围保持在120和255之间,因为一些较低的值可能导致单元格太暗而无法读取,但您可以根据自己的喜好自定义。下面的代码肯定可以改进,因为我不是专家,但它能够获得所需的100多种颜色。
编辑:我将补充说,RGB值可能会重叠。我只需要为视觉辅助设置颜色代码;但如果您需要严格的唯一颜色值,此代码将无法保证。
Dim rCount, RandCol1, RandCol2, RandCol3, i As Long
rCount = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To rCount
If Sheet1.Cells(i, 1) = Sheet1.Cells(i + 1, 1) Then
Sheet1.Cells(i + 1, 1).Interior.Color = RGB(RandCol1, RandCol2, RandCol3)
Else
If Sheet1.Cells(i + 1, 1) <> "" Then
RandCol1 = WorksheetFunction.RandBetween(120, 255)
RandCol2 = WorksheetFunction.RandBetween(120, 255)
RandCol3 = WorksheetFunction.RandBetween(120, 255)
Sheet1.Cells(i + 1, 1).Interior.Color = RGB(RandCol1, RandCol2, RandCol3)
End If
End If
Next i