Excel需求:D列选READ时E列设当日日期且固定不随日期变更
解决Excel标记已读后固定日期的问题
你的问题核心是TODAY()属于易失性函数,Excel每次重新计算(比如打开文件、修改其他单元格)时,都会自动更新成当天日期,没法固定住标记已读的那个日期。下面给两个可行的解决方案:
方案1:用VBA工作表事件(最可靠)
这种方式能在你选择"READ"时,直接把当前日期写入E列,生成的日期完全静态不会变动:
- 右键点击工作表标签(比如Sheet1),选择「查看代码」
- 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Columns("D")) Is Nothing Then Dim cell As Range For Each cell In Intersect(Target, Me.Columns("D")) If cell.Value = "READ" Then cell.Offset(0, 1).Value = Date cell.Offset(0, 1).NumberFormat = "yyyy-mm-dd" ' 可自定义成你需要的日期格式 End If Next cell End If End Sub
- 关闭VBA编辑器回到工作表,之后只要D列选中"READ",对应的E列就会自动填入当天日期,且后续不会随系统日期变化。
方案2:用迭代计算(无需宏)
如果不想使用VBA,可以通过开启迭代计算实现:
- 点击「文件」→「选项」→「公式」,勾选「启用迭代计算」,将迭代次数设置为1
- 在E2单元格输入公式:
=IF(D2="READ",IF(E2="",TODAY(),E2),"") - 下拉公式到其他行即可
这个方法的逻辑是:只有当D2为"READ"且E2为空时,才生成当天日期;一旦日期生成后,E2有了值就不会再更新。但如果手动清空E列,它会重新生成当前日期。
内容的提问来源于stack exchange,提问作者cglf12345
相关产品推荐
相关产品推荐

