Excle隐藏大佬——REDUCE函数,让复杂计算一步到位

office

REDUCE函数是Excel 365和Excel 2021中引入的一个新函数,它可以将数组缩减为通过应用LAMBDA函数将每个值累计到总和中而返回的累计值

REDUCE语法=REDUCE([initial_value], array, LAMBDA(accumulator, value, function)),即(初始值,数组,自定义函数)

一、简单累加

图片

D2单元格=REDUCE(0,B2:B10,LAMBDA(a,b,a+b)),公式解释:

初始值:0

数组:B2:B10

函数:LAMBDA(a,b,a+b),其中a和b是两个自定义变量

二、计算乘积

图片

D2单元格=REDUCE(1,B2:B10,LAMBDA(a,b,a*b)),

连续相乘与累加相比,初始值参数改为1,函数中的计算规则为乘法

三、连接字符串

图片

D2单元格=REDUCE("",B2:B10,LAMBDA(a,b,a&b))

四、计算加权平均值

图片

D2单元=REDUCE(0,SEQUENCE(9),LAMBDA(a,i,a+INDEX(B2:B10,i)*INDEX(C2:C10,i)))

公式解释:

  1. SEQUENCE(9)
  • 生成一个1到9的序列数组{1;2;3;4;5;6;7;8;9},用于迭代9次
  1. REDUCE函数结构
  • 初始值:0

  • 要遍历的数组:SEQUENCE(9)生成的{1;2;3;4;5;6;7;8;9}

  • LAMBDA函数:定义每次迭代的操作

  1. *LAMBDA(a,i, a + INDEX(B2:B10,i)INDEX(C2:C10,i))
  • INDEX(B2:B10,i)获取第i个数值

  • INDEX(C2:C10,i)获取第i个权重

  • 两者相乘后加到累加器a上

  • 参数a:累加器,保存中间结果

  • 参数i:当前迭代的索引值(1,2,3,4,5,6,7,8,9)

  • 操作:a + INDEX(B2:B10,i)INDEX(C2:C10,i),计算值权重,累加到a上

**说明:与SCAN函数参数基本一致,只是在结果反馈上有所不同,SCAN函数返回的是与原数组相同大小的一个数组,REDUCE返回的是最后的一个结果