答案 0 :(得分:2)
尝试这个简单的代码并根据您的需要进行修改。它非常自我解释,
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
答案 1 :(得分:2)
Gowtham的解决方案仅特定于数字,并使用VBA。我有一个简单的解决方法,可以处理任何类型的数据,不需要VBA。
我们可以使用另一列,该列使用公式为所有重复项生成唯一值,并对该列使用“ Conditional Formatting
> Color Scales
” 。下面的屏幕截图。
您可以使用的公式是
"=ROW(INDEX(A$2:A$12,MATCH(A2,A$2:A$12,0)))"
在上面的公式中,A $ 2:A $ 12是我们要搜索重复项的范围。
该公式基本上在给定范围内搜索重复值的第一个实例,然后输入该第一个实例的行号。
PS:在上式中,范围“ A $ 2:A $ 12”是固定范围,在表中使用上述公式要简单得多,因为表范围是动态的
使用表格的另一个好处是,我们甚至可以对数据进行排序,以将重复值分组在一起
=ROW(INDEX([Column1],MATCH(A2,[Column1],0)))
答案 2 :(得分:0)
Gowtham的答案很好,没有它们,我将无法弄清楚以下内容!我对唯一的颜色分配也有同样的需求,但是,我需要比colorindex提供的56种颜色更多的变化,因此我通过使用RandBetween和RGB通过随机的红色来创建随机的颜色,对Gowtham的代码进行了一些修改,以提供更多的可变性,蓝色和绿色值。
我将颜色范围保持在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