根据单元格范围中存在的字母突出显示列中的单元格
Highlight cells in a column depending on a letter present in cell range
我有一列指示项目进度(以百分比表示),如果相应行中没有字母 P
,该列应变为红色。使用以下公式会发生一些非常奇怪的事情:
=ISERROR(FIND("p",$H5:$Y65))
所以我设置 P
不是错误,不包含 P
的单元格应设置为红色。但是,对于这个公式,只有当第一列中有 P
时,即 H 才会格式化。该公式似乎忽略了 H 之后的所有其他列。
有什么建议吗?
FIND 没有您想要的功能,它在 字符串 中搜索,而不是在 数组 中搜索。尝试 select 在相关列中从第 5 行到第 65 行,然后开始 > 样式 - 条件格式、新规则...,使用公式确定要格式化的单元格和 格式化满足此公式的值::
=ISERROR(MATCH("P",$H5:$Y5,0))
格式...,select红色填充,OK,OK。
假设 P
是整个单元格内容,而不仅仅是一部分。
我会重新考虑你的范围,你说相应的行,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)
我有一列指示项目进度(以百分比表示),如果相应行中没有字母 P
,该列应变为红色。使用以下公式会发生一些非常奇怪的事情:
=ISERROR(FIND("p",$H5:$Y65))
所以我设置 P
不是错误,不包含 P
的单元格应设置为红色。但是,对于这个公式,只有当第一列中有 P
时,即 H 才会格式化。该公式似乎忽略了 H 之后的所有其他列。
有什么建议吗?
FIND 没有您想要的功能,它在 字符串 中搜索,而不是在 数组 中搜索。尝试 select 在相关列中从第 5 行到第 65 行,然后开始 > 样式 - 条件格式、新规则...,使用公式确定要格式化的单元格和 格式化满足此公式的值::
=ISERROR(MATCH("P",$H5:$Y5,0))
格式...,select红色填充,OK,OK。
假设 P
是整个单元格内容,而不仅仅是一部分。
我会重新考虑你的范围,你说相应的行,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)