You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中用LAMBDA+SCAN实现条件重置的累计求和?

解决Excel 365中SCAN+LAMBDA条件重置累计求和的问题

你的核心问题是原公式引用了整个B列区域,SCAN逐行迭代时无法获取当前行的单个B值判断,导致重置逻辑失效。以下是两种可行的单公式解决方案:

方案1:合并A/B列数组迭代

直接将A列和B列合并为二维数组,让SCAN同时处理每行的数值和标记:

=SCAN(0, HSTACK(A2:A6, B2:B6), LAMBDA(acc, pair, IF(INDEX(pair, 2)=0, 0, acc + INDEX(pair, 1))))
  • 逻辑说明:HSTACK(A2:A6,B2:B6)把每行的A值和B值合并为一个数组对;
  • Lambda函数中,pair代表当前行的[A值,B值],INDEX(pair,2)提取当前行的B标记;
  • 若B标记为0,重置累计值为0;否则用累计值acc加上当前A值。

方案2:通过OFFSET定位对应B列单元格

利用OFFSET函数获取当前A值所在行的B列单元格,无需合并数组:

=SCAN(0, A2:A6, LAMBDA(acc, x, IF(OFFSET(x, 0, 1)=0, 0, acc + x)))
  • 逻辑说明:OFFSET(x,0,1)表示当前A单元格(x)向右偏移1列的单元格(即同一行的B列值);
  • 同样通过判断该B值是否为0,决定重置累计或继续累加。

测试示例

假设A2:A6为[1,2,3,4,5],B2:B6为[1,1,0,1,1],两个公式都会返回结果:[1,3,0,4,9],符合“B=0时重置累计”的需求。

内容的提问来源于stack exchange,提问作者user27957254

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 02:37:10