如何在Excel汇总表中引用工作簿最后一个工作表的指定单元格
如何在Excel汇总表中引用工作簿最后一个工作表的指定单元格
嘿,这个需求我太熟了——每月新增工作表,汇总表要自动抓最后一张表的指定单元格,不用管它叫啥名字对吧?刚好有两种靠谱的方法,看你偏好公式还是宏:
方法一:用Excel函数组合(无需VBA,需保存为启用宏格式)
这个方案用宏表函数+文本处理来实现,步骤很简单:
在汇总表的目标单元格里输入以下公式(把A1换成你实际要引用的单元格,比如B5):
=INDIRECT("'"&TEXTAFTER(INDEX(GET.WORKBOOK(1),SHEETS()),"]")&"'!A1")
公式拆解:
GET.WORKBOOK(1):返回工作簿里所有工作表的完整名称(格式类似[你的工作簿名.xlsx]Pay Estimate 1)INDEX(..., SHEETS()):从所有工作表里挑出最后一张的名称(SHEETS()会返回总工作表数)TEXTAFTER(..., "]"):把工作表名称里的路径部分去掉,只留下纯表名(比如Pay Estimate 1)INDIRECT("'"&...&"'!A1"):把处理好的表名和单元格拼接成合法的引用,最终获取对应单元格的值
注意事项:
- 首次使用时Excel可能会提示安全警告,选择启用内容即可
- 记得把文件保存为
.xlsm格式(启用宏的工作簿),否则公式会失效 - 新增工作表后,公式会自动更新引用,不用手动修改
方法二:自定义VBA函数(更稳定,需启用宏)
如果你觉得公式有点绕,写个简单的自定义函数更省心:
- 按
Alt+F11打开VBA编辑器 - 在左侧工程窗口右键点击你的工作簿,选择「插入」→「模块」
- 粘贴以下代码:
Function LastSheetCell(cellRef As String) As Variant ' 获取工作簿最后一个工作表 Dim lastSheet As Worksheet Set lastSheet = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) ' 返回指定单元格的值 LastSheetCell = lastSheet.Range(cellRef).Value End Function
- 回到Excel,在汇总表单元格里输入
=LastSheetCell("A1")(同样把A1换成目标单元格)
这个方法的好处是不用处理复杂的文本拼接,而且对特殊字符的工作表名兼容性更好,唯一要求就是启用宏并保存为.xlsm格式。
备注:内容来源于stack exchange,提问作者Big Bald E
相关产品推荐
相关产品推荐

