如果为假则返回原始函数的 If 语句(类似于 iferror,或替代)

如果为假则返回原始函数的 If 语句(类似于 iferror,或替代)

如果我使用 IFERROR 而不是 IF(ISERROR,我可以节省两次输入条件的时间。

IE

 =IFERROR(Long lookup,"not found")

更倾向于

 =IF(ISERROR(long_lookup),"not found",long_lookup)

当涉及较长的公式时。

然而对于类似

 =IF(long_lookup=some_condition,"outtext",long_lookup)

是否有一个通用公式可以让我输入

 =IF2(long_lookup,some_condition,"outtext")

除了错误之外的其他内容。或者类似的东西,允许我在条件不满足时输出原始公式(而不是简单地输出 FALSE)。

本质上,我想避免不必要地重复的公式。

一个解决方法是将公式放在之前的列中,然后使用

 =if(condition(a2),"out if true",A2))

但这很痛苦

编辑:类似的还有 =SUBSTITUTE(),但是如果您尝试替换的整个单元格也包含为其他单元格的子字符串,则此方法不起作用,例如,如果我想要查找返回“B”以输出“foobar”,但有可能返回“Batch 1”。这对于空白也不起作用。

答案1

实际上这是一个非常好的问题,我经常会用到,但不幸的是,目前我认为没有一个通用的解决方案可以使用。

一种解决方法是使用 VBA 函数,但是它也有自己的局限性,下面您可以找到一个简短的函数来执行它(当然如果您想广泛使用它,它需要改进,例如错误处理,适应更多操作员,而不仅仅是=):

Function IfCondition(expression as Variant, criteria as Variant, ElseExpression)
  IF expression = criteria Then
    IfCondition = expression
  Else
    IfCondition = elseExpression
  End If
End Function

相关内容