如何让TODAY()函数表头列的数据随日期变更同步移动
解决日期表头更新时配送数据不同步的问题
方法一:用动态公式匹配数据(推荐)
这种方法通过分离数据存储和展示区域,让展示数据自动匹配表头日期,从根源避免错位:
- 新建一个「数据源」工作表,专门存储所有历史配送记录:
- A列存日期(手动输入或用
TODAY()记录当天日期) - B列存对应日期的配送文本信息
- A列存日期(手动输入或用
- 回到原展示工作表,设置表头:
- A1单元格输入
=TODAY()(当天日期) - B1输入
=TODAY()-1(前一天),C1输入=TODAY()-2,以此类推到E1(共5列)
- A1单元格输入
- 为每一列的配送信息设置匹配公式:
- A2单元格输入
=INDEX(数据源!$B:$B, MATCH(A1, 数据源!$A:$A, 0)) - 把A2的公式向右拖动到E2,再向下拖动覆盖所有需要展示的行
这样每天打开表格时,表头日期自动更新,公式会自动从数据源中匹配对应日期的配送数据,不会出现错位。
- A2单元格输入
方法二:用VBA脚本自动同步数据移动
如果习惯在同一区域维护数据,可以用脚本实现每天自动左移数据:
- 按下
Alt+F11打开VBA编辑器 - 双击左侧对应工作表,粘贴以下代码:
Private Sub Workbook_Open() ' 将右侧列数据依次左移 Range("E2:E100").Copy Range("D2:D100") ' 调整E和D为实际列范围,100为最大行数 Range("D2:D100").Copy Range("C2:C100") Range("C2:C100").Copy Range("B2:B100") Range("B2:B100").ClearContents ' 清空最左侧列数据,准备录入当天新信息 ' 更新表头日期 Range("A1").Formula = "=TODAY()" Range("B1").Formula = "=TODAY()-1" Range("C1").Formula = "=TODAY()-2" Range("D1").Formula = "=TODAY()-3" Range("E1").Formula = "=TODAY()-4" End Sub
- 保存表格为「启用宏的工作簿(.xlsm)」格式,之后每天打开表格时,数据会自动左移,和更新后的表头日期同步。
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

