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

如何基于单元格历史值设置当前值并跟踪人员付款记录?

人员付款跟踪表格解决方案

针对你需要在更新季度应付金额时,同时固化已付金额、跟踪累计已付总额的需求,提供以下3种可行方案:

方案1:VBA宏自动固化已付金额

适合需要完全自动化的场景,状态设为TRUE时自动锁定当时的应付金额到累计列,后续修改不影响已固化数值。

假设表格结构:

  • A列:姓名
  • B列:当前应付金额
  • C列:付款状态(TRUE=已付,FALSE=未付)
  • D列:累计已付金额

操作步骤:

  1. 右键点击工作表标签,选择「查看代码」打开VBA编辑器
  2. 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Columns("C")) Is Nothing Then
        Dim rng As Range
        Set rng = Target.Cells(1, 1)
        If rng.Value = True Then
            Me.Cells(rng.Row, "D").Value = Me.Cells(rng.Row, "D").Value + Me.Cells(rng.Row, "B").Value
            ' 可选:锁定状态列防止误改,取消注释即可
            ' rng.Locked = True
        End If
    End If
End Sub
  1. 保存文件为「启用宏的工作簿(.xlsm)」

效果:每次将C列设为TRUE时,宏自动把当时B列的金额加到对应行的D列;后续修改B列金额或C列状态,D列的累计值不会变动。如需撤销某笔记录,直接手动修改D列数值即可。

方案2:迭代计算实现无宏固化

适合无法启用宏的环境,通过Excel迭代计算功能保留第一次标记为已付时的金额。

操作步骤:

  1. 开启迭代计算:文件→选项→公式→勾选「启用迭代计算」,设置「最多迭代次数」为1
  2. 新增辅助列(如E列:已固化金额),在E2单元格输入公式(下拉填充到所有行):
=IF(C2=TRUE, IF(E2="", B2, E2), E2)
  1. 累计已付列(D列)输入汇总公式(下拉填充):
=SUMIF($A$2:$A$100, A2, $E$2:$E$100)

(请根据实际数据范围调整公式中的行号)

原理:当C2变为TRUE时,E2会自动填入当时的B2数值;迭代计算会让E2保留第一次的结果,后续修改B2或C2状态都不会改变E2的值。D列通过SUMIF按姓名汇总所有已固化金额,得到累计总额。

方案3:手动粘贴+透视表汇总

适合季度更新频次低的场景,操作简单易上手:

  • 保留原有的「当前应付金额」和「付款状态」列
  • 新增「已付记录」列,当付款状态设为TRUE时,手动将当时的应付金额复制后右键选择「粘贴为值」到该列
  • 插入数据透视表,以「姓名」为行标签,「已付记录」为值字段(求和),快速生成累计已付总额报表

内容的提问来源于stack exchange,提问作者David Van der Rijt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:42:52