365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

内容分享7小时前发布
0 2 0

365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

拥有函数自定义功能,还能实现复杂的递归计算,LAMBDA功能虽然强劲,但是却有一个致命的软肋!

正如:

=LAMBDA(x,y,x+y)

365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

将会返回结果“#CALC!”,缘由在于函数需要传递参数才能计算。

因此,LAMBDA的出现往往伴随着许多搭档,REDUCE无疑是众多搭档中最为出色的一位!

列如:

=REDUCE(0,{3,5,10},LAMBDA(x,y,x+y))

将会返回结果“18”。

365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

REDUCE的作用就是为LAMBDA函数传递参数,并且按照必定的规则执行计算。

REDUCE一共三个参数:(初始值,数组,函数)

=REDUCE(0,{3,5,10},LAMBDA(x,y,x+y))

公式中:

初始值:0;

数组:{3,5,10};

函数:LAMBDA(x,y,x+y)。

其中,REDUCE初始值对应LAMBDA的第一参数,数组中的每一个值对应第二参数,函数部分为计算表达式。

需要说明的是:LAMBDA的第一二参数是自己定义的,也可以是其他的名称,列如a、b、rr等。

计算原理:

第一步:

初始值为0,即x=0;

传递的数组中的第一个值为3,即y=3;

这时,计算x+y=0+3=3。

第二步:

这时,初始值不再是最初的0,上一步计算的结果3,作为这一步的初始值,即此时x=3;

传递的数组中的第二个值为5,即y=5;

这时,计算x+y=3+5=8。

第三步:

这时,初始值为上一步计算的结果8,作为这一步的初始值,即此时x=8;

传递的数组中的第三个值为10,即y=10;

这时,计算x+y=8+10=18。

至此,REDUCE第二参数数组{3,5,10}传递结束,计算终止,返回最终的结果18。

基于上面的逻辑,下面公式的结果不难想到吧:

=REDUCE(0,{3,5,10,100},LAMBDA(x,y,x+y))

365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

将会传递计算第四次,x+y=18+100=118。

还有一个重大的地方需要特别注意,那就是初始值!

有两种情况,一种是以前面公式中为0或者为其他值,另一种情况是省略。

在省略初始值的情况下,初始值也是存在的,它等于传递数组中的第一个值,并且此时这个值并不执行计算表达式中的计算!

列如:

=REDUCE(0,{3,5,10,100},LAMBDA(x,y,x+y))

=REDUCE(,{3,5,10,100},LAMBDA(x,y,x+y))

由于第一个公式计算过程是0+3+5+10+100,第二个公式计算过程为3+5+10+100,虽然计算过程不同,但是计算结果是一样的。

而下面两个公式结果则不相等:

=REDUCE(0,{3,5,10,100},LAMBDA(x,y,x+y^2))

=REDUCE(,{3,5,10,100},LAMBDA(x,y,x+y^2))

365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

第一个公式的计算过程为0+3^2+5^2+10^2+100^2;

第二个公式的计算过程为3+5^2+10^2+100^2;

区别就在于第2个公式初始值省略,第一个传递的值3并不进行平方计算,直接作为初始值进入下一步的计算。

3^2-3=6,因此两个公式的计算结果相差6。

接下来看一个字符串组合案例:

如下图所示,需要对一些数字重复指定次数,最后组

合成一串文本字符串。

365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

公式一:

=CONCAT(REPT(A2:A7,B2:B7))

解析:

REPT(A2:A7,B2:B7)由于REPT两个参数均支持数组写法,可直接将指定数字批量重复指定的次数,返回的结果再用CONCAT组合起来。

但并不是所有的函数都支持数组写法,或者说有时并不方便进行批量操作,需要一步一步地分步处理。

接下来我们用REDUCE也能解决这个问题。

公式二:

=REDUCE(

“”,

A2:A7,

LAMBDA(X, Y, CONCAT(X, REPT(Y, OFFSET(Y, , 1))))

)

解析:

公式中依然是REPT执行重复数字的操作,REPT(Y,OFFSET(Y,,1))表明将传递的Y值重复指定的次数,次数为Y向右偏移一个单元格位置的值。

第一初始值为””,每传递计算一次,CONCAT将初始值与计算得到的值合并,这样直到传递结束合并完成。

365最强函数LAMBDA之最强搭档——百变魔术师REDUCE!

© 版权声明

相关文章

2 条评论

  • 头像
    骆驼 读者

    这是我见过的把lambda写的最明白的了,之前看到这个函数总感觉懂了又没懂,这次算是明白了

    无记录
    回复
  • 头像
    小辰吾妮 投稿者

    收藏了,感谢分享

    无记录
    回复