我有一个列表示项目进度(以百分比表示),如果在相应的行中没有字母P
,则应该变为红色。使用以下公式会发生一些非常奇怪的事情:
=ISERROR(FIND("p",$H5:$Y65))
所以我设置P
不是错误,不包含P
的单元格应该格式化为红色。但是,使用此公式时,仅当第一列中有P
时,即H格式化。公式似乎忽略了H.之后的所有其他列。
有什么建议吗?
答案 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)