夜雨聆风学习资料网

ARTICLE · 1141930

开了天眼了!Excel 这个新函数几乎包揽了所有计算功能

开了天眼了!Excel 这个新函数几乎包揽了所有计算功能

公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必“设为星标”哦!!!

点击任意文章上方的“☆星标”即可。

今天的案例需要聚精会神学,一个强大的、可以替代很多函数功能的新函数。

一定要学习一下。

案例:

要教的这个函数内容太多,会分两期写。

今天先讲求和、累计相减、计算乘积、计算单元格个数、求每个数值的平方之和。

效果如下图所示。

解决方案:

1. 求和:

=REDUCE(,A2:A7,LAMBDA(x,y,x+y))

公式释义:

  • reduce 函数是个强大的动态数组函数,主要用于对数组或区域进行累计计算(逐元素迭代并更新结果),该函数适用于需要自定义规则的场景;

  • reduce 通常都结合 lambda 函数一起使用,通过 LAMBDA 将条件应用于每个值,并在累加器中返回总值;

  • 语法为 REDUCE ([initial_value],array,lambda (accumulator,value,body) ):

    • [initial_value]:累计计算的初始值;

    • array:需要计算的数组或区域;

    • accumulator:累积器,用于储存中间结果和返回最终结果,每次迭代都会更新;

    • value:数组中的当前值;

    • body:应用于每个元素的计算规则;

  • reduce 函数会逐行/逐列遍历数组,每一步都将 body 的值代入 lambda 函数,结合 accumulator 计算出新的中间结果,最终返回遍历完成后的累计值。

说了这么多,可能大家一下子理解不了,我们根据案例中的公式来学习。

REDUCE(,A2:A7,LAMBDA(x,y,x+y)):

  • 第一个参数留空的话,默认将数组中的第一个元素作为初始值;处理的时候会跳过第一个元素,从第二个元素开始处理;

  • A2:A7:需要计算的区域;

  • LAMBDA(x,y,x+y):每次迭代时,将当前累积器 x 加上当前元素 y,得到一个累计值,放入累积器 x 中;逐个元素迭代,最终得到所有元素的累计求和结果。

2. 累计相减:

=REDUCE(,A2:A7,LAMBDA(x,y,x-y))

公式释义:

  • 这个公式与第一个公式唯一的区别就是将 x+y 变成了 x-y;

  • 第一个参数留空,表示将第一个将第一个元素作为初始值存在累积器 x 中,并且依次取被减数 y 的时候,会跳过第一个元素,从第二个元素开始取值;

  • 依次用累积器中的值减去自第二个元素开始的值;最终执行的公式就是 2-2-2-2-2-2=-8。

3. 求乘积:

=REDUCE(,A2:A7,LAMBDA(x,y,x*y))

这里就不再重复解释了,原理和前两个公式完全一样,只是将迭代计算公式改成了 *,计算出所有单元格的乘积。

4. 统计区域内的单元格个数:

=REDUCE(0,A2:A7,LAMBDA(x,y,x+1))

公式释义:

  • 这里要注意了,统计个数的时候,区域内的第一个元素也是要统计进去的,所以第一个参数不可以省略,要设置为 0,这样的话,计数的时候就不会跳过第一个元素;

  • lambda 函数遍历区域中的每个单元格,每处理一次,累积器 x 的值就 +1,从而实现单元格个数统计;

  • 这里没有对空单元格特别写限制条件,所以空单元格也会被计数。

5. 计算平方之和:

=REDUCE(0,A2:A7,LAMBDA(x,y,x+y^2))

公式释义:

  • 与上面那个公式的唯一区别是将 lambda 函数的最后一个参数改成了 x+y^2,表示计算每一个元素的平方,并且加入累加器 x 中;

  • 遍历公式,实现所有平方值的累加。

6. 统计非空单元格个数:

=REDUCE(0,A2:A13,LAMBDA(x,y,IF(y<>"",x+1,x)))

公式释义:

  • lambda 函数的第三个参数改为了 IF(y<>"",x+1,x),表示只有元素值不为空的时候,累积器的值才 +1,否则就保留原来的值。

转发、点赞、在看也是爱!

相关学习资料