REDUCE:减少,缩小,浓缩
函数REDUCE:通过将 LAMBDA 应用于每个值,并在累加器中返回总值,将数组减小为累积值。
相比起“减小“,将”累加器“作为这个函数的关键词其实更加直观。
=REDUCE([初始值],数组, lambda())
第一参数视为一个累加器,LAMBDA针对第二参数数组元素逐个运算,每一次的运算结果都会被累加到第一参数中,而累加后的第一参数又将再次参与下一次运算,如此往复直到运算结束。最终,累加器的值将被作为REDUCE的结果返回。
1~10的平方和
平方和即将数字平方后求和:
1*1+2*2+3*3+……+10*10=?
=REDUCE(0,A1:A10,LAMBDA(x,y,x+y*y))
REDUCE第一参数设置为0,将被传递给LAMBDA第一参数x.
REDUCE第二参数是一个数组,将被传递给LAMBDA第二参数y.
LAMBDA将针对y里面的数组元素逐个执行运算x+y*y
y中有10个元素,所以进行了10次运算,每次运算的参数变化和结果如下图。
文本叠加
上述案例中执行加法运算,每次运算结果返回累加器时也执行加法。
以下案例中用VSTACK执行数组堆叠运算,结果返回累加器时自然也执行数组堆叠。
=REDUCE("单元号",A1:A5,LAMBDA(x,y,VSTACK(x,y&"-"&B1:B3)))
累加器起始值“单元号“,后续每次运算的结果在此基础上叠加。
下图中显示出前2次运算的参数变化和结果,后续的以此类推。