如何让Sheet#6公式始终引用Sheet#7(周四日期命名)指定单元格?
解决Sheet6引用固定位置Sheet7指定单元格的问题
你的公式报错是因为Excel无法直接在单元格引用中嵌套函数生成工作表名称——这种动态生成的表名需要用INDIRECT函数来转换成有效的单元格引用。下面给你两种解决方案,根据你的需求选择:
方案一:按工作表名称(周四日期)引用
这个方案基于你生成周四日期的逻辑,用INDIRECT把动态生成的表名转换成引用:
=INDIRECT("'"&TEXT(5-WEEKDAY(TODAY())+TODAY(),"m.d.yy")&"'!B2")
说明:
TEXT(...)部分负责生成周四的日期字符串(格式m.d.yy)- 用
"'"&...&"'"把日期字符串包裹在单引号里,因为工作表名称包含点号,必须用单引号括起来才能被Excel识别 INDIRECT函数会把拼接好的字符串(比如'10.12.23'!B2)转换成真实的单元格引用
不过这里要注意日期计算的准确性:如果当前日期已经是周四之后(周五、周六、周日),你原来的公式会返回上周四的日期。如果需要不管当前日期,都返回本周四的日期,可以把日期公式改成:
TEXT(TODAY()+MOD(4-WEEKDAY(TODAY(),2),7),"m.d.yy")
(这里用WEEKDAY(TODAY(),2)让周一=1、周四=4,确保计算出的是本周四)
方案二:按工作表位置(第7位)引用
既然你明确周四的标签页始终处于第7位,直接按位置引用会更可靠(不用依赖名称是否正确)。可以用INDEX+GET.WORKBOOK来获取第7个工作表的名称,再用INDIRECT引用:
=INDIRECT("'"&INDEX(GET.WORKBOOK(2),7)&"'!B2")
说明:
GET.WORKBOOK(2)会返回当前工作簿所有工作表名称的数组INDEX(...,7)提取数组中第7个元素(也就是第7个工作表的名称)- 同样用单引号包裹名称,再通过
INDIRECT转换成单元格引用
⚠️ 注意:GET.WORKBOOK是宏表函数,需要将文件保存为.xlsm格式(启用宏的工作簿),并且在Excel选项中允许宏运行。如果你不想启用宏,也可以手动确认第7个工作表的默认名称(比如默认是Sheet7),直接用:
=Sheet7!B2
这个公式最简单,但前提是你没有修改过第7个工作表的默认名称(如果重命名了,这个公式就会失效)。
测试建议
- 先验证日期生成公式是否正确:单独在一个单元格输入
TEXT(5-WEEKDAY(TODAY())+TODAY(),"m.d.yy"),看是否和Sheet7的名称完全一致(包括大小写、点号位置) - 输入方案中的公式后,如果还是报错,检查Sheet7是否存在,以及单元格B2是否有数据
内容的提问来源于stack exchange,提问作者The Gootch
相关产品推荐
相关产品推荐

