我喜歡保持 Excel 電子表格相當乾淨。所以,很多時候我最終會寫出這樣的聲明:
IF([formula x]=[value],"",[formula x])
這實質上是說,如果公式符合給定條件,則不顯示結果 - 否則,顯示結果。
在某些情況下,[formula x]
會在整列單元格中重複,並且每個單元格都有一個指向[formula x]
其上方單元格的參考。為了避免公式錯誤,我必須添加另一層,如下所示:
IF(C2="","",IF([formula x]=[value],"",[formula x])
然而,特別[formula x]
是當 很長時,這可能會導致最終公式看起來比實際複雜得多,並且比應有的情況更難以排除故障和維護。
這是一個可怕的例子...
基本公式:
=IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)
添加條件消隱:
=IF(C2="","",IF(IF(A3>=$E$11,C2+(C2*($F$2/12)-$E$9),C2+(C2*($F$2/12))-$E$7)<=0,"",IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)))
一個已經很長的公式的大小增加了一倍多,這樣當相同的公式滿足給定條件時,我可以顯示空白(或任何其他選定的值)。如果我嘗試在整行上執行此操作,根據起始公式,我很容易遇到循環引用錯誤。
有沒有辦法在同一儲存格中自引用現有公式或參數,或者可以使用另一個函數或功能來更乾淨地實現此結果?
執行我正在尋找的功能的函數可能如下所示:
=FnName([base formula],[match condition],[condition result])
參數 1 是基本公式,參數 2 是我感興趣的匹配條件。參數 3 是條件匹配時顯示的結果。如果條件不匹配,函數將傳回基本公式的結果。
答案1
您是否考慮過評估隱藏儲存格(或另一個工作表上的儲存格)中的公式,然後根據隱藏儲存格中的值進行條件消隱,而不必輸入公式兩次。我不知道你工作的整個背景,但我過去做過類似的事情並取得了一些成功。
答案2
您可以求助於 VBA 函數來清理公式語法。例如,您可以將類似的內容放入模組中(按Alt+ F11,然後按 Insert >> Module):
Option Explicit
Public Function BLANKIF(checkcell As String, notb As Variant, Optional checkcond As String) As Variant
If checkcell = checkcond Then
BLANKIF = ""
Else
BLANKIF = notb
End If
End Function
因此,要使用它來應用條件消隱
=IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)
你會使用
=BLANKIF(C2,IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7))
如果您想要將儲存格設為空白 if C2
= "omg",您可以新增第三個可選參數:
=BLANKIF(C2,IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7),"omg")
答案3
您可以使用它Conditional Formatting
來實現您的目標。
從公式中刪除所有多餘的內容,只留下基本公式
Format only cells that contain
將條件與您的刪除標準一起套用
當消隱條件為真時,套用自訂數字格式;;;
Excel 2007 或更高版本的替代方案
IFERROR(value, value_if_error)
來自 Excel 幫助:
如果公式計算結果出錯,則傳回您指定的值;否則,返回公式的結果。使用 IFERROR 函數擷取並處理公式中的錯誤。