Excel中如何实现其他单元格填数据时插入固定当日日期不更新
解决Excel自动填充固定当日日期的问题
因为TODAY()是易失性函数,每次打开文件或触发计算都会自动更新,要实现「填入数据时自动填充当日日期且日期固定不变」,可以用以下两种方法:
方法一:VBA事件宏(推荐,稳定性更高)
这种方法会在你往A列指定区域填入数据时,自动给对应C列写入静态日期:
- 打开目标Excel文件,按
Alt+F11打开VBA编辑器 - 在左侧工程面板找到你的目标工作表(比如Sheet1),双击进入代码编辑界面
- 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' 仅监控A2到A50区域的单元格变化 If Not Intersect(Target, Me.Range("A2:A50")) Is Nothing Then Dim cell As Range For Each cell In Intersect(Target, Me.Range("A2:A50")) ' 仅当A列单元格非空、且对应C列单元格为空时,写入当日日期 If cell.Value <> "" And Me.Cells(cell.Row, "C").Value = "" Then Me.Cells(cell.Row, "C").Value = Date ' 可选:设置日期显示格式,比如yyyy-mm-dd Me.Cells(cell.Row, "C").NumberFormat = "yyyy-mm-dd" End If Next cell End If End Sub
- 关闭VBA编辑器,将文件保存为启用宏的工作簿(.xlsm格式)
之后只要往A2-A50区域填入内容,对应C列就会自动写入当天的静态日期,不会随时间推移更新。
方法二:迭代计算+辅助列(无需宏)
如果不想使用宏,可以通过迭代计算实现静态日期记录:
- 开启迭代计算:点击「文件」→「选项」→「公式」,勾选「启用迭代计算」,将迭代次数设为1
- 插入一个辅助列(比如D列,后续可隐藏),在D2单元格输入公式:
=IF(A2<>"",IF(D2="",TODAY(),D2),"") - 在C2单元格输入公式:
=D2 - 将D2和C2的公式下拉填充至D50和C50
原理是迭代计算让D列公式仅在A列第一次填入内容时记录TODAY()的值,之后D列会保留该值不再更新,C列直接引用D列的静态日期。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

