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

求助:如何用VBA追踪公式更新的M列并在AB列记录日期

实现Excel公式单元格更新时自动记录日期的VBA方案

核心思路

Worksheet_Change事件仅响应手动编辑的单元格变化,公式计算导致的值更新需要用Worksheet_Calculate事件捕获。我们借助一个隐藏列存储M列单元格的上一次值,每次计算时对比新旧值,不一致就更新AB列的日期。

代码实现(针对Sheet1)

右键点击目标工作表标签(如Sheet1),选择「查看代码」,粘贴以下代码:

Private Sub Worksheet_Calculate()
    Dim monitorRange As Range
    Dim cell As Range
    ' 定义M列要监控的范围:从M2到最后一行有数据的单元格
    Set monitorRange = Me.Range("M2:M" & Me.Cells(Me.Rows.Count, "M").End(xlUp).Row)
    
    ' 禁用事件避免循环触发
    Application.EnableEvents = False
    
    For Each cell In monitorRange
        ' 用AC列存储上一次的单元格值(可改成其他空列)
        With Me.Cells(cell.Row, "AC")
            If IsEmpty(.Value) Then
                ' 首次运行,初始化旧值
                .Value = cell.Value
            Else
                ' 对比新旧值,不同则更新AB列日期
                If cell.Value <> .Value Then
                    Me.Cells(cell.Row, "AB").Value = Date
                    .Value = cell.Value ' 更新旧值为当前值
                End If
            End If
        End With
    Next cell
    
    ' 恢复事件启用
    Application.EnableEvents = True
End Sub

操作细节

  1. 隐藏存储旧值的列:选中AC列,右键选择「隐藏」,避免干扰日常操作。如果不想用AC列,把代码里的"AC"改成其他空列(如"AD")即可。
  2. 调整监控范围:如果M列从M1开始监控,把代码里的"M2:M"改成"M1:M"。
  3. 保存格式:文件需保存为「Excel启用宏的工作簿(.xlsm)」,否则宏会失效。

测试验证

修改Sheet4中影响Sheet1 M列公式的单元格(如L2),Sheet1对应的AB列会自动记录当前日期,无需手动编辑M列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:16:01