如何使lambda函数在excel365上工作?

mnemlml8  于 2023-01-10  发布在  其他
关注(0)|答案(3)|浏览(255)

我用的是Excel 365,
有人能解释一下为什么这个功能不能正常工作吗?我不知道背后的原因是什么?

下面是Google Sheets中excel模拟的屏幕截图,它产生了预期的结果:

evrscar2

evrscar21#

BYROW函数中似乎有bug,因为用MAP替换它可以工作。

=MAP(SEQUENCE(5), LAMBDA(b, TEXTJOIN(",",, SEQUENCE(5,,b))))

顺便说一下,这不是我第一次看到MAP没有的BYROW的意外行为。它看起来更健壮。当LAMBDA for MAP有一个名称时,两个函数是等价的
奇怪的是,模拟Excel函数的Google Spreadsheet没有这种奇怪的行为。它可以工作,但你需要输入SEQUENCE的第三个输入参数(start),否则它会返回#NUM!,因为默认值是0而不是1

i7uq4tfw

i7uq4tfw2#

这在GSheet中效果很好(我的Excel是2019)

=BYROW(SEQUENCE(5),LAMBDA(b,TEXTJOIN(",",,SEQUENCE(1,5,b))))

第二个序列从空变为1。

4ioopgfo

4ioopgfo3#

不是实际问题的答案(为什么BYROW在给定示例中表现得不可预测),而是获得所需结果的替代解决方案:
BYROW仅限于1D溢出,因此如果我们想要2D溢出结果,则需要使用REDUCE。
如果使用REDUCE,可能会溢出您喜欢的结果:
第一个月

在这个例子中,你需要声明一个开始和一个数组来"循环"通过. xy。它从x开始,然后使用y进行第一次计算,结果成为下一个x。使用VSTACK使其可见,否则它会一直计算直到最后的y值被使用并且只显示它。堆叠它们使每个计算可见,并且不像BYROW,它可以溢出2D。由于您从0开始x,但尚未进行任何计算,因此需要使用DROP删除第一个值。最终结果是您所需的二维溢出。
(也可用于水平数组和HSTACK。)
您也可以向下和向侧面溢出(不使用TEXTJOIN):=DROP(REDUCE(0,SEQUENCE(5),LAMBDA(x,y,VSTACK(x,SEQUENCE(1,5,y)))),1)

=MAP(SEQUENCE(5),LAMBDA(x,TEXTJOIN(",",1,SEQUENCE(1,5,x))))还忽略BYROW意外结果。

相关问题