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

如何根据当前日期在公式中动态引用不同年度工作表?

动态引用年份工作表实现滚动数据提取

你的写法不可行的原因

直接在单引号中使用YEAR(TODAY())这类函数无法被Excel识别为工作表名称,Excel会把'year(today())'当作字面意义的工作表名(而非计算后的年份),导致引用错误。

修正后的可行公式

需要使用INDIRECT函数动态解析生成的工作表名称,它能将文本字符串转换为有效的单元格/区域引用。

基础修正版

=IF($D27="",0,IF($C35="PY",VLOOKUP(D30,INDIRECT("'"&YEAR(TODAY())-1&"'!$A$15:$M$209"),$B35,FALSE),VLOOKUP(D30,INDIRECT("'"&YEAR(TODAY())&"'!$A$15:$M$209"),$B35,FALSE)))

简化优化版(减少冗余代码)

合并年份判断逻辑,压缩公式长度:

=IF($D27="",0,VLOOKUP(D30,INDIRECT("'"&IF($C35="PY",YEAR(TODAY())-1,YEAR(TODAY()))&"'!$A$15:$M$209"),$B35,FALSE))

更高效的实现方案

如果你的Excel版本支持XLOOKUP(Office 365/2021及以上),推荐用它替代VLOOKUP——无需限制查找列在最左侧,逻辑更直观:

=IF($D27="",0,XLOOKUP(D30,INDIRECT("'"&IF($C35="PY",YEAR(TODAY())-1,YEAR(TODAY()))&"'!$A$15:$A$209"),INDIRECT("'"&IF($C35="PY",YEAR(TODAY())-1,YEAR(TODAY()))&"'!"&CHAR(64+$B35)&"$15:"&CHAR(64+$B35)&"$209")))

进阶:真正的滚动12个月数据

如果需要提取的是连续12个月(而非仅当前年/去年整表),比如当前是2024年3月,要取2023年3月-2024年2月的数据,仅靠公式会比较复杂,推荐用以下方法:

  • 使用Power Query将所有年份工作表的数据合并成带日期列的总表
  • 在总表中添加辅助列,判断日期是否在近12个月范围内
  • 直接从合并后的总表中查询所需数据,这种方法的维护性和效率都更高

内容的提问来源于stack exchange,提问作者Andy Latham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:55:30