我的单元格带有串联的单词列表(带有文本连接),我想对单词进行不同的着色以使其更具可读性。 只是一个例子来更好地解释我的问题: 5 个苹果 / 2 个橙子 / 3 个香蕉 / 5 个苹果 / 2 个猕猴桃 / 3 个橙子 我需要把苹果变成红色,把橙子变成橙色。
您对此有解决方案吗? 预先感谢!
我能够在这个论坛上找到一个使用 VBA 和 InStr 函数为单元格中的文本着色的示例,但我遇到的问题是单词经常重复,并且 InStr 不适用于多个条目:
AppleStartPosition = InStr(1, CurrentCellText, "Apple")
If AppleStartPosition > 0 Then
ActiveSheet.Cells(Row, Col).Characters(AppleStartPosition, 5).Font.color = RGB(255, 0, 0)
End If
正如 @Rory 评论的,首先将单元格内容转换为静态值,例如在 excel 或 vba 中使用复制和粘贴特殊/值,然后
这是一个示例代码,其中
cellofrange是要着色的范围
colarr 是要应用的颜色数组
仅对字母着色,并在发现非字母字符时更改颜色。
Sub colorer()
Dim cellofrange As Range, cellof As Range
Set cellofrange = Range("a19:a24")
colarr = Array(rgbSeaGreen, rgbSienna, rgbSlateGrey, rgbSlateBlue, rgbSkyBlue)
colpointer = 0
For Each cellof In cellofrange
changed = False
stringtocolor = cellof.Value
For i = 1 To Len(stringtocolor)
charact = Mid(stringtocolor, i, 1)
If Asc(charact) > 64 And Asc(charact) < 91 Or Asc(charact) > 96 And Asc(charact) < 123 Then
cellof.Characters(i, 1).Font.Color = colarr(colpointer)
changed = False
ElseIf Not changed Then
changed = True
If colpointer = UBound(colarr) Then
colpointer = 0
Else
colpointer = colpointer + 1
End If
End If
Next i
Next cellof
End Sub