仅当满足给定条件时才显示公式结果

仅当满足给定条件时才显示公式结果

我喜欢让我的 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 函数来捕获和处理公式中的错误。

相关内容