excel“LET”函数是否评估未使用的名称值对?

问题描述 投票:0回答:1

假设你有以下公式:

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")

在这种情况下,excel 是否评估“let_var2”和“delta”,或者仅根据需要评估“let_var1”、“let_var2”或“delta”是否节俭/高效?

根据下面的微软参考资料,我知道如果不需要,“let”可以有效地不多次评估项目。但是,我无法找到有关它是否在所有情况下至少评估一次的信息:

https://support.microsoft.com/en-us/office/let-function-34842dd8-b92b-4d3f-b325-b8b8f9908999

excel lambda excel-365
1个回答
0
投票

感谢@GSerg、@BigBen、@DS_London。您的所有评论都为我指明了测试行为的正确方向。

我使用注释对 let、switch 和 if 函数以及 MMULT 计算/数据生成进行了一些测试,根据观察到的性能,其行为如下:

支持功能:

fn_MMULTData =LAMBDA(n,MMULT(RANDARRAY(n, n), RANDARRAY(n, n)))

testLet = LAMBDA(_returnVar,LET(aPlusb, 1 + 1, c, fn_MMULTData(1000), aPlusb))

testSwitch = LAMBDA(_returnVar,SWITCH(_returnVar, "aPlusb", 2, "c", fn_MMULTData(1000)))

testIF = LAMBDA(_returnVar,IF(_returnVar = "aPlusb", 2, fn_MMULTData(1000)))

语句的顺序并不重要,除了 IF 语句之外,将内容包装在辅助 LAMBDA 中也无关紧要。当 fn_MMULTData(1000) 匹配条件时,其性能不会因评估而降低。也许有人在微软有联系。

© www.soinside.com 2019 - 2024. All rights reserved.