SCAN适合“上一行结果要参与下一行计算”的连续任务。它会返回每一步的中间值,不只是最后合计,因此比单个SUM更适合余额、结存和里程累计。下面用收支流水说明参数怎样对应到业务字段。

先判断SCAN是否比普通累计公式更合适

数据特征选择依据
记录会持续增加SCAN返回溢出数组,源区域扩展后可同步增加结果行。
只需要最终总额直接使用SUM更清楚,没有必要引入累计器。
每一步包含上一步状态例如库存不能低于零,可在LAMBDA内部加入MAX等约束。
旧版Excel不支持动态数组改用首行余额加本行变动的传统向下填充公式。

用收支流水写出逐行累计公式

  1. 整理净变动列

    将收入记为正数、支出记为负数,先用SUM核对整列净额,避免符号方向在累计过程中被放大。

  2. 指定初始余额

    公式第一参数写期初余额,例如5000;如果期初值来自单元格,应使用绝对引用,防止移动公式后偏移。

  3. 定义累计器和当前值

    在LAMBDA中使用两个不同名称,例如balance和change,返回balance+change;名称清楚比缩写更便于复核。

  4. 验证溢出结果

    检查第一行是否等于期初加第一笔变动,最后一行是否等于期初加全部净变动,并测试新增一笔记录。

案例:七笔备用金流水如何核对

期初备用金为5000元,七笔净变动依次为-320、-85、1000、-460、-120、600和-95。SCAN应依次返回4680、4595、5595、5135、5015、5615和5520;最后结果也应等于5000加SUM(净变动列)。

若流水中空白行代表“尚未录入”,可以先用FILTER排除空白;若空白代表金额0,则在LAMBDA内用N(current)转换。两种处理的结果行数不同,不能只看最终余额相同就认为正确。

交付前检查这四个边界

  • 期初余额为0时,第一笔支出是否得到负数而不是错误值。
  • 净变动列含文本金额时,公式是否明确报错并提示清洗数据。
  • 源表新增记录后,溢出区域下方是否存在阻挡内容。
  • 最后累计值是否与独立的期初余额加净变动合计完全一致。

把累计规则集中在一个SCAN公式中,价值在于所有中间状态都可见。正式账务仍应以业务系统和对账结果为准,工作表中的累计列用于分析与检查,不能替代原始凭证。

如果累计逻辑较长,可以先参考Excel LET函数简化长公式:命名中间结果并减少重复计算给中间变量命名;需要按部门或月份汇总最终发生额时,再使用Excel SUMIFS多条件求和:按部门和月份汇总费用,两者与逐行累计解决的是不同层次的问题。