如何避免 Excel 对公式求值两次?

How to avoid that Excel evaluates a formula twice?

我刚开始学习 Excel,在练习中我经常发现自己在一个公式中复制子表达式。例如,如果有人想在评估某些 expression(例如 vlookup)时检查可能的错误以输出合理的错误消息,我会尝试类似 if(iserror(expression);"error";expression) 的方法。这工作正常,但给我留下了一个问题,即这是否意味着 Excel 评估 expression 两次,这可能会产生计算成本。也许它不会(因为它会使用一些聪明的惰性策略),但如果它会发生,如何避免呢?我是否必须编写自己的函数(VBA?),或者有没有办法内联执行此操作(例如将 expression 绑定到变量)?

解决此问题的最懒惰的方法是在其自己的单元格中计算 expression,然后在公式中的两个位置引用该单元格,而不是在每个位置复制 expression 的公式。

您也可以使用=IFERROR(expression, [on error msg])来解决问题。