我有一张扑克牌列表,每张牌都在自己的单元格中,例如 3小时 2秒 钾 啊 杰西.... 为了帮助可视化,我想将心形和菱形的字体颜色更改为红色。 当然手动也是一种选择,但是非常乏味
我尝试(不成功)编写一个 vba 脚本来进行搜索并使用 Excel VBA 查找和替换 作为示例。 然而,由于我没有更改文本,它只是不断循环。我也无法指定搜索格式。
Sub Main()
Dim c As Range
Dim redCell As String
With Worksheets(1).Range("A1:A52")
Application.FindFormat.Clear
Application.FindFormat.Font.Color = rgbBlack 'Automatic was a problem
Set c = .Find("h", LookIn:=xlValues, Searchformat:=True)
If Not c Is Nothing Then
redCell = c.Address
Do
Range(redCell).Font.Color = -16776961
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub
我也尝试使用条件格式,但找不到有效的标准。 =OR(FIND("h",A1)=2,FIND("d",A1)=2) 生成#VALUE!错误 任何指点将不胜感激。
您可以使用此公式作为您的格式条件:
=OR(ISNUMBER(FIND("h",A1)),ISNUMBER(FIND("d",A1)))
您的尝试返回错误,因为
FIND("d",A1)
返回错误(在 A1 中未找到 d)。通过使用 ISNUMBER
FIND("d",A1)
将返回 false
而不是错误。
在套件字符上使用 FIND 可能是与工作表条件格式结合使用的更自然的方式。像这样的东西:
=查找(右(A1,1),"HhDd")>0
将对 H h D d 中的任何一个返回 true,对其他所有值返回 false 或 #value。 您还可以将其应用为该列的条件格式:
首页 -> 条件格式
选择 A1..A52,然后将其作为自定义规则放入 在条件格式中抛出 #value 有点顽皮,但它工作正常。
而不是有 VBA 代码。
您还可以在 VBA 中定义条件格式规则,例如,
Sub CondFormat()
Dim c
With Range("A1:A52").FormatConditions
.Delete
For Each c In Array("d", "h")
.Add Type:=xlTextString, String:=c, TextOperator:=xlContains
.Item(.Count).SetFirstPriority
.Item(1).Font.Color = -16776961
.Item(1).StopIfTrue = False
Next c
End With
结束子
已经有几个很好的答案,但只是为了接近您最初的尝试:
如果未找到字符串,FIND 将返回错误,因此您的公式始终返回错误(因为它永远不会同时找到
h
和 d
)。您可以使用 ISERROR 来捕获此内容:
=NOT(AND(ISERROR(FIND("h",A1)),ISERROR(FIND("d",A1))))