2015-11-02 76 views
1

我有一列指示項目進度(以百分比表示),如果在相應的行中沒有字母P,則該列會變成紅色。用下面的公式一件很奇怪的事情發生:根據單元格區域中顯示的字母來突出顯示列中的單元格

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

所以我已經設置P不是一個錯誤,並且不包含P應該被格式化的紅色細胞。但是,用這個公式,只有在第一列有P,即H是格式。該公式似乎忽略了H.之後的所有其他列。

有什麼建議嗎?

+0

您可能會澄清*僅當第一欄中有P時,即H是否與*一起格式化* *如果在相應的行中沒有字母「P」*,它應該變爲紅色。 – pnuts

回答

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) 
+1

這將允許你檢查P是否包含在一個字符串中,如果P是整個單元格內容,pnuts的解決方案就簡單多了。 – Schalton

相關問題