三、简写后的函数名,可以作为LAMBDA函数的参数传递运算方式。
例如在定义一个LAMBDA函数执行求和运算时,可以如下定义:
- =LAMBDA(x,x(B101:E108))(SUM)
复制代码
SUM作为参数x传递进LAMBDA函数体部分运算。同样的,还可以使用其他函数:
还可以正常传入多个参数,函数名作为参数之一:
- =LAMBDA(x,y,x(y))(SUM,B101:E108)
复制代码
但在使用这种方式时会有bug,群里冬佬提出的:
- =LAMBDA(x,y,z,x(z)-y(z))(MAX,MIN,B101:E108)
复制代码
上面的公式返回错误值,但是在LET一下后,返回值正常:
- =LAMBDA(x,y,z,LET(s,x(z),t,y(z),s-t))(MAX,MIN,B101:E108)
复制代码
BUG产生的原因目前不清楚,不知道以为微软会不会修复。但是错误值上有一些规律,随便做了一些测试,有兴趣的可以看下(不用深究,再怎么总结出错误值出现的规律也没有任何用处)。
单独返回一个值,正常:
以下搭配LET函数之后前两种返回正常,但第三种异常:
再来看一组测试,交换两个返回值的位置:
还可以做更多的测试,最后从现象上看,感觉是传递多个函数运算时,返回值的个数是够的,但是正确的返回值是从最右侧开始,只返回了最右边一半数量的正确结果,结果从右往左以:正确值+错误值+正确值+错误值……的方式返回:
- =LAMBDA(x,y,z,f,g,d,HSTACK(x(d),y(d),z(d),f(d),g(d)))(MAX,MIN,AVERAGE,SUM,MEDIAN,B101:E108)
复制代码
|