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

使用Arrayformula实现插入新行时自动维护累计余额

用ARRAYFORMULA实现自动累计余额(插入新行无需手动复制)

直接在余额列的起始计算单元格(比如D4)输入以下数组公式,替换原来的手动复制公式:

=ARRAYFORMULA(
  IF(ROW(A4:A)=ROW(A4), $D$3,
    IF(ROW(A4:A)>ROW(A4),
      SCAN($D$3, A4:A, 
        LAMBDA(acc, amt,
          IF(ISBLANK(amt), "",
            IF(OFFSET(B4:B, ROW(A4:A)-ROW(A4), 0)=$D$1, acc+amt,
              IF(OFFSET(C4:C, ROW(A4:A)-ROW(A4), 0)=$D$1, acc-amt, acc)
            )
          )
        )
      ),
      ""
    )
  )
)

公式逻辑说明

  • ARRAYFORMULA 让公式自动覆盖整列范围,无需逐行复制
  • SCAN 函数负责逐行迭代累计余额,初始值为你设置的期初余额$D$3
  • LAMBDA 定义核心计算规则:
    1. 若当前行Amount列(A列)为空,返回空值避免无效填充
    2. 检查Dr列(B列)是否为选中账户($D$1),是则余额累加金额
    3. 若Dr列不匹配,检查Cr列(C列)是否为选中账户,是则余额减去金额
    4. 都不匹配则保持上一行余额不变
  • 开头的IF判断确保第一行计算直接衔接期初余额,后续行自动迭代

自定义调整指南

  • 若期初余额位置变更:把公式中所有$D$3替换为对应单元格引用(比如$E$2)
  • 若账户下拉列表位置变更:把$D$1替换为对应单元格引用(比如$B$1)
  • 若金额/Dr/Cr列位置调整:修改A4:A、B4:B、C4:C为对应列的范围

注意事项

  • 输入公式前,请清空余额列(D4及以下)原有公式,避免冲突
  • 插入新行后,只要在A列输入金额、B/C列选择账户,余额会自动计算
  • 如果你用的是Excel 365,公式逻辑完全通用(Excel支持SCAN和动态数组,无需额外操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:25:25