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

Excel中TODAY()配合IF自动填充日期异常问题咨询

问题原因与解决方案

问题根源

你使用的TODAY()是易失性函数,它的核心特性是:只要工作表触发计算(比如打开文件、编辑任意单元格),就会自动更新为当前系统日期。所以前一天输入买家信息时生成的日期,第二天打开表格就会被替换成当日日期——这和嵌套IF无关,是函数本身的设计逻辑导致的。

解决办法

方法1:用VBA宏自动填充静态日期(推荐)

这是最省心的方案,能在输入买家信息时自动写入固定不变的日期:

  1. 右键工作表标签(如「Sheet1」),选择「查看代码」
  2. 在弹出的VBA编辑器中粘贴以下代码:
    Private Sub Worksheet_Change(ByVal Target As Range)
        ' 仅监控B列的单元格修改
        If Target.Column = 2 And Target.Value <> "" Then
            ' 对应A列单元格为空时,写入静态当日日期
            If Target.Offset(0, -1).Value = "" Then
                Target.Offset(0, -1).Value = Date
            End If
        End If
    End Sub
    
  3. 保存文件时选择「Excel 启用宏的工作簿(*.xlsm)」格式,之后在B列输入买家信息,A列会自动生成固定的当日日期,不会随时间更新。

方法2:手动转换为静态值(无宏方案)

如果不想用宏,可以生成日期后手动转为静态值:

  • 在B列输入信息后,A列用=IF(B24<>"",TODAY(),"")生成当日日期
  • 选中A列的日期单元格,按Ctrl+C复制,右键点击单元格选择「选择性粘贴」→「值」,把公式转换成固定的日期数值,后续就不会再更新。

方法3:迭代计算(不推荐)

这种方法依赖Excel的迭代设置,稳定性较差:

  1. 点击「文件」→「选项」→「公式」,勾选「启用迭代计算」,把迭代次数设为1
  2. A列公式改为:=IF(B24<>"",IF(A24="",TODAY(),A24),"")
  3. 但如果后续修改B列内容,可能会意外触发日期更新,风险较高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:23:10