如何在使用比较时避免在Excel中重复长公式?

我知道这样的事情

=IF(ISERROR(LONG_FORMULA), 0, LONG_FORMULA) 

可以换成

 =IFERROR(LONG_FORMULA, 0) 

不过,我正在寻找一个expression式来避免inputREALLY_LONG_FORMULA两次

 =IF(REALLY_LONG_FORMULA < threshold, 0, REALLY_LONG_FORMULA) 

我怎样才能做到这一点?

我能够想出以下几点:

 =IFERROR(EXP(LN(REALLY_LONG_FORMULA – threshold)) + threshold, 0) 

它通过利用负数的日志产生错误并且EXPLN彼此反转的事实来工作。

这样做的最大好处是避免了在您更改REALLY_LONG_FORMULA副本中的某些内容时无意中将错误引入到电子表格中,而无需将相同的更改应用于IF语句中REALLY_LONG_FORMULA的其他副本。

比在比较大

 =IF(REALLY_LONG_FORMULA>=threshold,0,REALLY_LONG_FORMULA) 

可以换成

 =IFERROR(threshold-EXP(LN(threshold-REALLY_LONG_FORMULA)),0) 

下面的示例(由@Jeeped提供):

大于或等于例子

对于严格的不平等比较,请使用@Tom Sharpe指出的SQRT(_)^2

如果你比较threshold金额,我会考虑检查ExcelJet最近的博客文章关于用MAX()或MIN()replace丑陋的IF 。

另外, MAX()MIN()函数比EXP()LN()等已知函数更加直观。

比较Ln Exp与SQRT ^ 2: –

在这里输入图像说明

因为SQRT(0)给出0,但ln(0)给出#NUM!

所以你可以select使用哪一个取决于你想要的平等与否。

这些也适用于负数 – 理论上。

在这里输入图像说明