Excle隐藏大佬——REDUCE函数,让复杂计算一步到位
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)))
公式解释:
- SEQUENCE(9)
- 生成一个1到9的序列数组{1;2;3;4;5;6;7;8;9},用于迭代9次
- REDUCE函数结构
-
初始值:0
-
要遍历的数组:SEQUENCE(9)生成的{1;2;3;4;5;6;7;8;9}
-
LAMBDA函数:定义每次迭代的操作
- *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返回的是最后的一个结果