在Excel中如何根据单元格的内容更改字体颜色

问题描述 投票:0回答:4

我有一张扑克牌列表,每张牌都在自己的单元格中,例如 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!错误 任何指点将不胜感激。

excel vba fonts conditional-formatting
4个回答
1
投票

您可以使用此公式作为您的格式条件:

=OR(ISNUMBER(FIND("h",A1)),ISNUMBER(FIND("d",A1)))

您的尝试返回错误,因为

FIND("d",A1)
返回错误(在 A1 中未找到 d)。通过使用
ISNUMBER
FIND("d",A1)
将返回
false
而不是错误。


1
投票

在套件字符上使用 FIND 可能是与工作表条件格式结合使用的更自然的方式。像这样的东西:

=查找(右(A1,1),"HhDd")>0

将对 H h D d 中的任何一个返回 true,对其他所有值返回 false 或 #value。 您还可以将其应用为该列的条件格式:

首页 -> 条件格式

选择 A1..A52,然后将其作为自定义规则放入 在条件格式中抛出 #value 有点顽皮,但它工作正常。

而不是有 VBA 代码。


0
投票

您还可以在 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

结束子


0
投票

已经有几个很好的答案,但只是为了接近您最初的尝试:

如果未找到字符串,

FIND 将返回错误,因此您的公式始终返回错误(因为它永远不会同时找到

h
d
)。您可以使用 ISERROR 来捕获此内容:
=NOT(AND(ISERROR(FIND("h",A1)),ISERROR(FIND("d",A1))))

© www.soinside.com 2019 - 2024. All rights reserved.