如何在Excel跨工作簿公式中用Worksheets(1)替代工作表名称?
可行的!这里有几种方法帮你实现自动引用第一个工作表的数据
你遇到的问题是因为Worksheets(1)是VBA专属语法,Excel单元格公式没法直接识别它。不过我们可以用工作表函数或Power Query来动态获取第一个工作表的名称,从而实现自动更新的引用,下面分两种场景给你解决方案:
方法一:用工作表函数实现(需要启用宏)
这种方法适合Pink File工作簿经常处于打开状态的场景,公式会实时更新:
在Customers工作簿的B2单元格输入:
=INDIRECT("'[Pink File.xlsx]"&INDEX(GET.WORKBOOK(1),1)&"'!$G$3")
公式解释:
GET.WORKBOOK(1):这是一个宏表函数,会返回当前打开的Pink File工作簿里所有工作表的名称数组INDEX(...,1):从数组里取出第一个工作表的名称(也就是你每月新增的最新工作表)INDIRECT(...):把拼接好的引用字符串转换成实际的单元格引用,从而获取G3的数据
注意事项:
- 必须把Customers工作簿保存为启用宏的工作簿(.xlsm格式),否则宏表函数会失效
- Pink File工作簿需要处于打开状态,INDIRECT才能正常引用其中的数据
- 不管第一个工作表的名称是什么(比如"Mar 18"或"Apr 2"),公式都会自动识别并引用它的G3单元格
方法二:用Power Query实现(无需宏,支持关闭的工作簿)
如果你不想启用宏,或者需要引用关闭的Pink File工作簿,Power Query是更稳定的选择:
- 在Customers工作簿里,点击数据选项卡 → 获取数据 → 从文件 → 从工作簿
- 选择你的Pink File.xlsx,在弹出的导航器窗口里,不要选择具体工作表,点击转换数据进入Power Query编辑器
- 打开高级编辑器,替换代码为类似下面的内容(注意修改文件路径):
let Source = Excel.Workbook(File.Contents("C:\你的文件夹路径\Pink File.xlsx"), null, true), FirstSheet = Source{0}[Data], // 获取第一个工作表的数据 ExtractG3 = FirstSheet{2}[Column7] // 提取第3行第7列(对应G3)的值 in ExtractG3
- 点击关闭并上载,把结果加载到Customers工作簿的B2单元格(或指定位置)
后续更新:
之后每月新增工作表后,只要在Customers工作簿里点击数据 → 全部刷新,Power Query就会自动读取Pink File的第一个工作表的G3数据,即使Pink File是关闭状态也能正常工作。你还可以设置自动刷新:右键点击加载的查询 → 连接属性 → 勾选"刷新频率"并设置间隔时间。
总结
- 如果你经常打开Pink File,用方法一的公式最便捷
- 如果需要处理关闭的工作簿或不想用宏,优先选Power Query方案
内容的提问来源于stack exchange,提问作者12fretter
相关产品推荐
相关产品推荐

