根据单元格区域中的字母突出显示列中的单元格

时间:2015-11-02 12:23:19

标签: excel excel-formula formula conditional-formatting

我有一个列表示项目进度(以百分比表示),如果在相应的行中没有字母P,则应该变为红色。使用以下公式会发生一些非常奇怪的事情:

=ISERROR(FIND("p",$H5:$Y65))

所以我设置P不是错误,不包含P的单元格应该格式化为红色。但是,使用此公式时,仅当第一列中有P时,即H格式化。公式似乎忽略了H.之后的所有其他列。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

FIND没有您寻求的功能,它在字符串中搜索,而不是在数组中搜索。尝试从相关列中的第5行到第65行进行选择,并且HOME>样式 - 条件格式,新规则...,使用公式确定要格式化的单元格格式化此公式的值:

=ISERROR(MATCH("P",$H5:$Y5,0))

格式化... ,选择红色填充,确定,确定。

假设P是完整的单元格内容,而不仅仅是其中的一部分。

答案 1 :(得分:0)

我会重新考虑你的范围,你说相应的行,是Y65而不是Y5的印刷错误?如果您使用当前公式进行填充,则会有重叠的单元格,因为下一行将覆盖H6:Y66,并且将再次检查范围H6:Y65。

也就是说,pnuts是正确的,但你可以通过用户定义的函数实现这一点,例如:

Function BooleanRangeFind(SearchRange As Range, MatchCriteria As String, CaseSensative As Boolean) As Boolean
Dim Rng As Range
Dim CurStr As String
'checks and changes the MatchCriteria to Uppercase, this is
'the easiest way to ignore case sensativity
If CaseSensative = False Then MC = UCase(MatchCriteria)
'iterates through each cell in the range and checks for the MatchCriteria
'in each cell
For Each Rng In SearchRange
    'Case Sensativity Check
    If CaseSensative = False Then
        CurStr = UCase(Rng.Value)
    Else
        CurStr = Rng.Value
    End If
    If InStr(1, CurStr, MC) <> 0 Then
    'If the MC is in the Current Range
    'the formula stops looking and returns
    'a true
        BooleanRangeFind = True
        Exit Function
    End If
Next Rng
'Default Value is False
BolleanRangeFind = False
End Function

你的公式可能是

=BooleanRangeFind($H6:$Y65,"p",False)

或者如果我的假设是正确的:

=BooleanRangeFind($H6:$Y6,"p",False)