我有一张包含最多大约 100 个不同文本值的表格,我想根据文本为它们着色,以便您可以直观地看到哪些单元格具有相同的文本(表!B2:DB100)。
我有一个单独的表,其中列出了表中的值(动态)(list!A1:A100)。
一种可能的解决方案是应用条件格式来确定表!B2:DB100 中的单元格是否等于列表!A1。如果是,则用颜色 1 着色。然后添加另一个条件格式,说明如果表!B2:DB100 中的单元格等于列表!A2,则颜色为颜色 2。依此类推。
手动执行此操作会很痛苦,因为有 100 个可能的文本值。
我相信我可以使用宏来做到这一点,它还有一个额外的好处,就是你可以以一种有序的方式应用 RGB 值。
事实上,宏是最好的方法吗?应用大约 100 种条件格式会拖慢电子表格的速度吗?有没有更简单的方法可以达到同样的效果?
答案1
不管怎样,我有一些工作得相当好的东西。我写了一个宏来应用条件格式。
Sub conditional()
'
' conditional Macro
i = 1
station = 1
colorscheme = 1
Do Until Sheets("Data").Cells(i + 3, 3) = ""
a = "=Data!" + Sheets("Data").Cells(i + 3, 3).Address
c1 = 255
c2 = 147 + 17 * station
Select Case colorscheme
Case 1 'red
mycolor = RGB(c1, c2, c2)
Case 2 'yellow
mycolor = RGB(c1, c1, c2)
Case 3 'green
mycolor = RGB(c2, c1, c2)
Case 4 'cyan
mycolor = RGB(c2, c1, c1)
Case 5 'blue
mycolor = RGB(c2, c2, c1)
Case 6 'purple
mycolor = RGB(c1, c2, c1)
End Select
Range("H4:BE48").FormatConditions.Add Type:=xlTextString, String:=a, _
TextOperator:=xlContains
With Range("H4:BE48").FormatConditions(Range("H4:BE48").FormatConditions.Count)
.Interior.Color = mycolor
.StopIfTrue = True
End With
i = i + 1
station = station + 1
If station = 5 Then
station = 1
colorscheme = colorscheme + 1
End If
If colorscheme = 7 Then
colorscheme = 1
End If
Loop
End Sub
以下是示例中的样子:
我欢迎任何意见、建议或改进。