Excel中指定单元格非空白修改时更新最后修改日期的公式优化
优化Excel时间更新逻辑:B列修改时自动更新D列时间
现有公式=IF(B3<>"",IF(D3<>"",D3,NOW()),"")仅能在B列单元格从空白变为非空白时,触发对应D列单元格用NOW()更新时间。要实现B列已填充单元格被修改时也自动更新D列当前时间,Excel公式无法直接完成,需借助VBA宏实现:
操作步骤
- 打开目标Excel文件,按下
Alt + F11打开VBA编辑器 - 在左侧工程面板中找到目标工作表(如Sheet1),双击打开其代码窗口
- 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Columns("B")) Is Nothing Then Dim cell As Range For Each cell In Intersect(Target, Me.Columns("B")) If cell.Value <> "" Then Me.Cells(cell.Row, "D").Value = Now() Else Me.Cells(cell.Row, "D").Value = "" End If Next cell End If End Sub
代码说明
- 监控B列所有单元格的修改事件,只要B列单元格内容发生变化就触发逻辑
- 若修改后B列单元格非空,对应行的D列单元格自动写入当前时间
- 若B列单元格被清空,对应行的D列单元格也同步清空
注意事项
- 保存文件时需选择
.xlsm(启用宏的工作簿)格式,否则宏无法生效 - 如需限定监控B列的特定行范围,可将
Me.Columns("B")修改为Me.Range("B2:B100")(示例范围,按需调整)
内容的提问来源于stack exchange,提问作者Romeo Guerrero
相关产品推荐
相关产品推荐

