如何用单个公式计算可按条件重置的行级累计求和?
解决方案
可以使用Google Sheets的ARRAYFORMULA结合SCAN函数实现动态行数的条件重置累计求和,无需拖拽公式,单个公式即可自动适配数据更新。
在E2单元格输入以下公式:
=ARRAYFORMULA( SCAN(, C2:C, LAMBDA(acc, curr, IF(ISBLANK(curr),, IF(ROW(curr)>ROW(C2) AND AND(NOT(ISBLANK(INDEX(D:D, ROW(curr)-1))), INDEX(D:D, ROW(curr)-1)<>0), curr, IF(ISBLANK(acc), curr, acc + curr) ) ) )) )
公式说明:
ARRAYFORMULA:让公式自动应用到整列,无需手动拖拽。SCAN:逐行遍历C列数据,维护一个累加值(acc),并根据条件更新这个值:- 如果当前C列单元格为空,返回空值,避免填充无关行。
- 第一行数据(C2)直接返回自身值作为初始累加值。
- 后续行检查上一行的D列单元格是否非空且非零:
- 满足条件时,重置累加值为当前C列单元格的值。
- 不满足条件时,将当前C列单元格的值加到之前的累加值上。
这个公式会自动适配C列的动态行数,当外部源更新数据时,累计求和结果会同步自动更新。
内容的提问来源于stack exchange,提问作者Argyll
相关产品推荐
相关产品推荐

