繁体   English   中英

EXCEL - LAMBDA function 的奇怪行为

[英]EXCEL - Strange behaviour with LAMBDA function

我将以下 LAMBDA function 创建为命名范围 (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)))))

function 本身完全按预期工作,但是,当我用 ROWS() 包装 function 时,当 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 来解决这个问题,这很好,但我真的很想了解这里发生了什么。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM