如何为Excel动态数组的每行计算水平累计求和(Running Total)
实现Excel动态数组每行独立的水平累计求和
要解决跨行列累计的问题,核心是对每行单独应用累计求和逻辑,可以通过BYROW结合SCAN+LAMBDA的组合实现,完全适配动态数组的扩展需求。
核心公式
假设你的源数组为A1:B4(或动态引用如A#:B#),使用以下公式:
=BYROW(你的源数组, LAMBDA(row, SCAN(0, row, LAMBDA(acc, val, acc + val))))
公式拆解
BYROW:遍历源数组的每一行,将每行数据独立传递给后续的LAMBDA函数,保证各行计算互不干扰SCAN(0, row, LAMBDA(acc, val, acc + val)):针对当前行执行累计求和:- 初始累计值设为
0 - 每次迭代将累计值
acc与当前元素val相加,生成该行的水平累计序列
- 初始累计值设为
示例验证
输入源数组:
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |
应用公式后得到预期结果:
| 1 | 3 | 6 | 10 |
| 5 | 11 | 18 | 26 |
扩展适配
- 如果数组垂直扩展(新增行),
BYROW会自动识别并处理新增行的累计求和 - 若需实现列方向的独立累计求和,只需将
BYROW替换为BYCOL即可
内容的提问来源于stack exchange,提问作者ryflake
相关产品推荐
相关产品推荐

