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

求助:Excel中用TODAY()计算返工日期后如何避免其每日变动

解决Excel返工日期随TODAY()变动的问题

核心问题

TODAY()是易失性函数,每天打开表格或刷新时都会自动更新,导致用TODAY() + 休假天数计算的返工日期每日变动。要解决这个问题,关键是把动态计算的返工日期转为静态值,同时保留驻场天数的动态计算功能。


方案一:手动将公式结果转为静态值(适合少量数据)

当员工提交休假天数后,按以下步骤固定返工日期:

  1. 选中计算好返工日期的单元格(公式为=TODAY() + 休假天数)
  2. 按Ctrl + C复制单元格内容
  3. 右键点击该单元格,选择「粘贴选项」中的值(或按快捷键Ctrl + Alt + V,在弹出的窗口选择「值」后确定)
  4. 此时单元格会从公式转为固定的日期值,不会再随TODAY()变动

驻场天数的公式保持不变(比如=返工日期单元格 - TODAY()),依然会每天自动更新计算当前到返工日的天数。


方案二:用VBA自动固定返工日期(适合批量/频繁操作)

通过编写工作表事件宏,实现输入休假天数后自动生成静态返工日期:

  1. 打开Excel表格,按Alt + F11打开VBA编辑器
  2. 在左侧项目窗口中,双击你要设置的工作表(比如「Sheet1」)
  3. 在右侧代码窗口中粘贴以下代码(根据实际列调整,示例中假设休假天数在C列,返工日期在D列):
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 调整以下列号和偏移量匹配你的表格结构
    Const LEAVE_DAYS_COLUMN = 3 ' 休假天数所在列(C列=3)
    Const RETURN_DATE_COLUMN_OFFSET = 1 ' 返工日期列相对于休假天数列的偏移量(D列=C列+1)
    
    If Target.Column = LEAVE_DAYS_COLUMN And Target.Value <> "" Then
        Application.EnableEvents = False ' 防止触发循环更新
        ' 直接赋值为静态日期,而非公式
        Target.Offset(0, RETURN_DATE_COLUMN_OFFSET).Value = Date + Target.Value
        Application.EnableEvents = True
    End If
End Sub
  1. 保存文件为.xlsm格式(启用宏的工作簿),同事使用时需启用宏

注意事项

  • 宏启用后,只要在休假天数列输入数值,对应的返工日期会自动变为静态日期,无需手动操作
  • 驻场天数的公式保持原有逻辑即可,依然会动态计算每日的天数差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:01:16