Excel提取Excel工作簿中所有工作表的名称怎么设置?操作要点整理
想在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单元格。注意,如果你的工作表名称里带空格,公式里包裹表名的单引号绝对不能删,不然跳转就会报错。