我用的是Excel 365,有人能解释一下为什么这个功能不能正常工作吗?我不知道背后的原因是什么?
下面是Google Sheets中excel模拟的屏幕截图,它产生了预期的结果:
evrscar21#
BYROW函数中似乎有bug,因为用MAP替换它可以工作。
BYROW
MAP
=MAP(SEQUENCE(5), LAMBDA(b, TEXTJOIN(",",, SEQUENCE(5,,b))))
顺便说一下,这不是我第一次看到MAP没有的BYROW的意外行为。它看起来更健壮。当LAMBDA for MAP有一个名称时,两个函数是等价的。奇怪的是,模拟Excel函数的Google Spreadsheet没有这种奇怪的行为。它可以工作,但你需要输入SEQUENCE的第三个输入参数(start),否则它会返回#NUM!,因为默认值是0而不是1。
LAMBDA
SEQUENCE
start
#NUM!
0
1
i7uq4tfw2#
这在GSheet中效果很好(我的Excel是2019)
=BYROW(SEQUENCE(5),LAMBDA(b,TEXTJOIN(",",,SEQUENCE(1,5,b))))
第二个序列从空变为1。
4ioopgfo3#
不是实际问题的答案(为什么BYROW在给定示例中表现得不可预测),而是获得所需结果的替代解决方案:BYROW仅限于1D溢出,因此如果我们想要2D溢出结果,则需要使用REDUCE。如果使用REDUCE,可能会溢出您喜欢的结果:第一个月
在这个例子中,你需要声明一个开始和一个数组来"循环"通过. x和y。它从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)
x
y
=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意外结果。
=MAP(SEQUENCE(5),LAMBDA(x,TEXTJOIN(",",1,SEQUENCE(1,5,x))))
3条答案
按热度按时间evrscar21#
BYROW
函数中似乎有bug,因为用MAP
替换它可以工作。顺便说一下,这不是我第一次看到
MAP
没有的BYROW
的意外行为。它看起来更健壮。当LAMBDA
forMAP
有一个名称时,两个函数是等价的。奇怪的是,模拟Excel函数的Google Spreadsheet没有这种奇怪的行为。它可以工作,但你需要输入
SEQUENCE
的第三个输入参数(start
),否则它会返回#NUM!
,因为默认值是0
而不是1
。i7uq4tfw2#
这在GSheet中效果很好(我的Excel是2019)
第二个序列从空变为1。
4ioopgfo3#
不是实际问题的答案(为什么BYROW在给定示例中表现得不可预测),而是获得所需结果的替代解决方案:
BYROW仅限于1D溢出,因此如果我们想要2D溢出结果,则需要使用REDUCE。
如果使用REDUCE,可能会溢出您喜欢的结果:
第一个月
在这个例子中,你需要声明一个开始和一个数组来"循环"通过.
x
和y
。它从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意外结果。