如果我使用 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