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

Excel IF函数使用问题:每日生产数据历史记录无法保留

解决Excel中IF函数无法保留历史产量数据的问题

问题根源

你当前的C列公式=IF(B1=1,(Daily Production Cell), C1)存在两个核心问题:

  1. 循环引用:公式试图引用自身单元格(C1),Excel的计算逻辑无法稳定保留这类引用的历史值。
  2. 公式动态特性:Excel公式是实时计算的,当TODAY()更新为次日,B列对应单元格变为0时,C列公式会自动重新计算,直接覆盖之前存储的产量数据,导致历史值丢失。

可行解决方案

方案1:用VBA宏自动记录每日数据

这是最自动化的方式,能在打开文件或指定时机自动将当日产量写入对应C列单元格:

  1. 按Alt + F11打开VBA编辑器。
  2. 在左侧项目窗口找到你的工作簿,右键插入模块。
  3. 粘贴以下代码(根据实际工作表和单元格地址修改):
Sub RecordDailyProduction()
    Dim ws As Worksheet
    Dim targetRow As Integer
    Dim prodCell As Range
    Dim dateCol As Range
    
    ' 替换为你的工作表名称
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    ' 替换为你的Daily Production Cell地址
    Set prodCell = ws.Range("D1")
    ' 对应9月日期的A列范围
    Set dateCol = ws.Range("A1:A30")
    
    ' 查找今日日期对应的行号
    targetRow = dateCol.Find(What:=Date, LookIn:=xlValues, LookAt:=xlWhole).Row
    
    ' 将产量写入对应C列单元格
    ws.Range("C" & targetRow).Value = prodCell.Value
End Sub
  1. 可设置工作簿打开自动执行:双击ThisWorkbook,选择Workbook和Open事件,粘贴Call RecordDailyProduction。

方案2:手动快照+辅助列(无需宏)

如果不想用宏,可通过辅助列配合手动操作实现:

  1. 新增D列作为「产量快照列」,每天手动将Daily Production Cell的值复制粘贴为值到D列对应日期的单元格。
  2. C列公式修改为:=IF(A1=TODAY(), Daily Production Cell, D1)
    非当日的C列会读取D列的手动快照值,不会被动态覆盖。

方案3:Power Query自动追加历史数据

  1. 将每日产量和对应日期整理成Excel表格(按Ctrl+T)。
  2. 用Power Query加载该表格,设置「关闭并上载至」为仅创建连接。
  3. 每天更新产量后,刷新Power Query连接,它会自动将新数据追加到历史记录表中,不会覆盖旧数据。

内容的提问来源于stack exchange,提问作者Abdul Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:41:04