众力资讯网

累计计算,列出每一步计算结果的 Excel 公式

还记得曾经教过的递归函数吗?详情请参阅开了天眼了!Excel 这个新函数几乎包揽了所有计算功能。今天讲解另一对递归函数组

还记得曾经教过的递归函数吗?详情请参阅开了天眼了!Excel 这个新函数几乎包揽了所有计算功能 。

今天讲解另一对递归函数组合,跟上述函数不同的是,这个组合可以算出每个中间步骤的结果。

案例:

根据下图 1 中右侧数据表的要求计算 A 列的各种累计值,要将每一步的累计结果全部列出来。

效果如下图 2 所示。

解决方案:

1. 在 C2 单元格中输入以下公式:

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

公式释义:

scan 函数的作用是通过对每个值应用 LAMBDA 来扫描数组,并返回具有每个中间值的数组;

它跟 reduce 函数的区别是:reduce 返回最终计算结果,而 scan 可以将每一个中间步骤的结果都列出来;

语法为 SCAN([累加器的起始值],数组,lambda (累加器,数组中的当前值,应用于数组中每个元素的计算));

公式中第一个参数省略,表示将第一个元素当作起始值存在累加器中,不参与计算;第二次迭代的时候,用累加器的值与第二个元素相加;

第二个参数 A2:A7 为计算区域;

LAMBDA(x,y,x+y):x 为累加器;y 是当前元素,每次不断迭代;x+y 表示计算规则,将累加器的值加上当前元素,就是累计求和。

2. 在 D2 单元格中输入以下公式:

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

公式释义:

公式与 C 列的公式原理一样,就不重复解释了,lambda 参数部分 (x,y,x-y) 是用累加器的值减去当前元素值。

3. 在 E2 单元格中输入以下公式:

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

公式释义:

LAMBDA(x,y,x*y):lambda 的参数将累加器 x 与当前元素 y 相乘;

然后用 scan 函数列出每个当前元素的计算结果。

4. 在 F2 单元格中输入以下公式:

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

公式释义:

scan 函数的第一个参数设置为 0,就是将 0 作为累加器的初始值,第一个元素需要参与第一次计算;此处第一个元素是 1,所以结果恰巧跟留空的效果是一样的,但计算原理并不一样,实际工作中要根据计算需要调整第一个参数;

LAMBDA(x,y,x+y^2):x 是累计值;公式的第一个结果为 0+1^2=1,第二个结果为 1+2^2=5……依此类推。