Excel LET函数是否支持惰性求值?未使用命名对是否会被计算
Excel LET函数的计算逻辑问题
问题场景
假设使用如下公式:
LAMBDA(returnVar_, LET( let_var1, XLOOKUP(...), let_var2, XLOOKUP(...), delta, let_var1 - letvar2, SWITCH(returnVar_, "let_var1", let_var1, "let_var2", let_var2, "delta", let_var1 - letvar2))("let_var1")
当调用该公式并指定返回let_var1时,Excel是否会计算let_var2和delta?还是仅按需计算所需的变量?
已知微软官方文档提到LET函数可避免重复计算,但未明确是否会强制计算所有命名对。
结论
Excel的LET函数会按定义顺序计算所有命名变量,无论后续的SWITCH分支是否用到这些变量。也就是说,哪怕你指定返回let_var1,let_var2和delta也会被完整计算。
具体解释
LET函数的执行逻辑是:先依次计算所有名称=表达式的命名对,完成全部变量的计算后,再执行最后一个表达式(这里的SWITCH)。它的"避免重复计算"是指如果同一个变量在后续表达式中多次引用,只会计算一次,而非按需跳过未使用的变量计算。
以你的例子来说,执行流程是:
- 第一步:计算
let_var1的XLOOKUP结果 - 第二步:计算
let_var2的XLOOKUP结果 - 第三步:计算
delta的值 - 第四步:执行SWITCH,返回
let_var1的值
内容的提问来源于stack exchange,提问作者Den. A.
相关产品推荐
相关产品推荐

