【问题标题】:EXCEL - Strange behaviour with LAMBDA functionEXCEL - LAMBDA 函数的奇怪行为
【发布时间】:2023-01-26 19:41:50
【问题描述】:

我将以下 LAMBDA 函数创建为命名范围 (LIST_VALUES);

=LAMBDA(range,[ignore_header],LET(filtered,FILTER(range,range<>""),IF(OR(ISOMITTED(ignore_header),NOT(ignore_header)),filtered,INDEX(filtered,SEQUENCE(ROWS(filtered)-1,,2)))))

该函数本身完全按预期工作,但是,当我用 ROWS() 包装函数时,当 ignore_header 标志设置为 TRUE 时,我会得到不一致的行为;

上面的示例突出了问题,单元格 F8 应等于“3”,与 D8 相同。

D8

=ROWS(LAMBDA(range,[ignore_header],LET(filtered,FILTER(range,range<>""),IF(OR(ISOMITTED(ignore_header),NOT(ignore_header)),filtered,INDEX(filtered,SEQUENCE(ROWS(filtered)-1,,2)))))($A:$A,TRUE))

F8

=ROWS(LIST_VALUES($A:$A,TRUE))

有谁知道这里发生了什么或我如何解决它?我目前正在通过将 ignore_header 设置为 false 并从结果中减去 1 来解决这个问题,这很好,但我真的很想了解这里发生了什么。

【问题讨论】:

    标签: excel lambda excel-formula


    【解决方案1】:

    我们无法真正单步执行 lambda 中的内部过程,因此很难确定错误出现的位置(因此内部错误计数为“1”)。但我可以建议将您的公式简化为:

    =LAMBDA(range,[ignore_header],DROP(TOCOL(range,3),OR(ISOMITTED(ignore_header),NOT(ignore_header))))
    

    当包裹在ROWS() 中时,我无法检测到任何不一致,例如:=ROWS(LIST_VALUES(A:A,TRUE)) 现在对我来说按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      相关资源
      最近更新 更多