Excel提取Excel工作簿中所有工作表名称怎么设置:操作要点整理

作者:袖梨 2026-07-14

在excel里想批量把当前工作簿所有工作表的名称一次性提出来,用「名称管理器+get.workbook+index/textafter」这套组合就能搞定。本次操作环境是microsoft 365版的excel,这个方法特别适合给目录页、汇总页、检查表自动生成工作表清单。要注意get.workbook是excel 4.0的宏函数,做完之后文件记得存成启用宏的格式,比如.xlsm或者.xlsb,不然下次打开容易丢效果。

动手之前先在当前工作簿里新建一张空白页,命名成「工作表目录」专门放提取出来的结果,别和业务数据混在一起,之后新增、删除、重命名工作表的时候,要刷新清单也方便。

第一步:确认工作簿里已有多个工作表

先看Excel窗口底部的工作表标签,确认所有要提取名称的表都在同一个工作簿里。示例里已经提前建好了「工作表目录、人力资源部、市场部、法务部、财务部、后勤部、公关部、工程部」这些标签,后面的公式会直接读取这些标签的名字。

第二步:在名称管理器中新建名称

点开顶部菜单栏的「公式」选项卡,找到「名称管理器」点进去,也可以直接选「定义名称」,新建一个自定义名称。名称栏填 sheetname,下方的引用位置输入 =GET.WORKBOOK(1) 就行。这个自定义名称不是普通的单元格内容,相当于提前让Excel把当前工作簿所有工作表的名称打包成数组存好,后面再用普通工作表公式一条条读出来。

第三步:在目录页输入提取公式

切回刚才建好的「工作表目录」页,在A1单元格输入公式 =TEXTAFTER(INDEX(sheetname,ROW(A1)),"]"),输完直接往下填充。INDEX(sheetname,ROW(A1)) 负责先取出第1个工作表的条目,再用 TEXTAFTER 把前面的文件名和右方括号全部删掉,只留后面纯工作表的名字。往下填充的时候,ROW(A1) 会自动变成1、2、3,依次把所有工作表的名字逐个返回出来。

公式语法拆开看

刚才名称管理器里的核心语法是 =GET.WORKBOOK(type_num)。这次我们用的是 =GET.WORKBOOK(1),运行后返回当前工作簿所有工作表的完整名称,格式一般是类似 [公司部门建设.xlsx]人力资源部 这种带文件名的形式。要把前面的冗余内容清掉只留右方括号后面的表名,就搭配 TEXTAFTER 或者 MID/FIND 处理就行。

参数或公式片段 作用 本例写法
GET.WORKBOOK(1) 返回工作簿中所有工作表的完整名称数组 写在名称管理器的“引用位置”里
sheetname GET.WORKBOOK(1) 取的名称,后续公式通过它调用结果 新建名称时填写
INDEX(sheetname,ROW(A1)) 按序号取出第 1、2、3 个工作表项目 填在目录页单元格公式中
TEXTAFTER(...,"]") 删除工作簿名和右方括号,只保留工作表名称 适合 Microsoft 365
IFERROR(...,"") 填充到超过工作表数量的行时返回空白,避免出现错误值 可加在最外层

要是你预留的目录行很多,远远超过实际工作表的数量,建议把公式改成 =IFERROR(TEXTAFTER(INDEX(sheetname,ROW(A1)),"]"),"")。这样填充到没有对应工作表的空行时会自动返回空白,不会跳出错误值,目录页看起来更干净。

旧函数写法

如果你的Excel版本太低,没有 TEXTAFTER,第三步的公式可以换成 =IFERROR(MID(INDEX(sheetname,ROW(A1)),FIND("]",INDEX(sheetname,ROW(A1)))+1,99),"")。这条公式先用 FIND 定位到右方括号的位置,再用 MID 从方括号的下一个字符开始截取,最终效果和 TEXTAFTER 完全一样。要是你用的是WPS或者其他旧版Excel,提前确认下对应函数的支持情况再动手。

容易出错的地方

别直接把 GET.WORKBOOK(1) 写到普通单元格里,普通单元格根本没法直接调用这个宏函数,必须放在自定义名称的引用位置里才行。建好名称之后要是发现清单没更新,按一下 F9 手动重算就行,也可以直接把引用位置的内容写成 =GET.WORKBOOK(1)&T(NOW()),这样只要工作簿触发重算,工作表名称清单就会自动刷新。

存文件的时候一定要注意格式,要是存成普通的.xlsx格式,宏相关的自定义公式是没法永久保存的,后续还要用这个自动目录的话,存成.xlsm或者.xlsb格式最稳妥。还有如果你的工作表名称里本身带右方括号这类特殊字符,最好先做下测试,别让清理逻辑把表名给截错了。

扩展示例:做一个可点击目录

把所有表名提取出来之后,还能直接做成可跳转的超链接目录,在B1单元格输入 =HYPERLINK("#'"&A1&"'!A1","进入"&A1),往下填充就行。这样A列显示纯表名,点B列的链接就能直接跳转到对应工作表的A1单元格。注意如果你的工作表名称里带空格,公式里包裹表名的单引号绝对不能删,不然跳转就会报错。

相关文章

精彩推荐