我喜欢让我的 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,然后插入 >> 模块):
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 函数来捕获和处理公式中的错误。