怎么在WPS表格中用公式批量获取工作表名称列表?

功能定位:为什么“批量拿表名”值得单独讲
核心关键词“WPS表格批量获取工作表名称”看似小众,却是月度台账、预算拆分、合并报表等场景的第一道关口:只有把 N 个分表的名字自动列出来,后续用 INDIRECT、FILTER 动态汇总才有锚点。手动复制不仅低效,还会在新增/删除工作表时留下“幽灵引用”,让审计轨迹断档。本文只讨论纯公式方案,不启用宏,不依赖第三方插件,保证任何禁用 VBA 的企业环境也能复现。
前置条件与版本边界
经验性观察:以下方法在 Windows 桌面版 WPS Office 2026 年 3 月前最新更新(内部版本号≥11.8)均可直接运行;macOS 与 Linux 版因缺少 CELL 函数完整参数,会返回 #NAME? 错误。Android/iOS 移动端暂不支持数组溢出,因此仅推荐在桌面端操作。
核心思路:用 CELL 函数“骗”出工作表名
WPS 表格未提供 SHEETSNAME 之类一次性返回表名单的函数,但 CELL("filename",A1) 可以返回完整路径+文件名+工作表名。只要用文本函数把“]”之后的字符串切出来,就能得到当前工作表名称。再把公式放到每个分表的同一块区域,最后统一引用,就能形成“表名清单”。
步骤 1:在任意工作表插入“锚点”公式
选中 A1(或其他空白单元格),输入:
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)
回车后,该单元格立即显示当前工作表名称。之所以用 255 是 WPS 允许的最大工作表名字符长度,保证不会截断。
步骤 2:让每张分表都“自我报名”
按住 Ctrl 逐一点选需要汇总的分表,保持群组编辑状态,在相同坐标(例如 A1)再次输入上述公式。WPS 的群组写入会在所有被选中的工作表同位置填入公式,且各自返回自己的工作表名——这是批量操作的关键。完成后点击任意非群组工作表退出群组模式。
步骤 3:在总表用三维引用收集名称
新建一张“目录”工作表,在 A 列输入:
=IFERROR(INDIRECT("'"&INDEX(SheetList,ROW(A1))&"'!A1"),"")
其中 SheetList 是后续步骤生成的纵向数组。若你只有 12 张月报,可直接写:
=IFERROR(INDIRECT("'"&{"1月","2月",…,"12月"}&"'!A1"),"")
向下填充即可。这样目录页就能动态同步各分表 A1 的表名,新增或重命名工作表后,按 F9 刷新即可。
进阶:一次性返回全部表名的“溢出数组”
如果你不想手工维护 SheetList,可以借助 LAMBDA + LET 做递归。WPS 在 2026 年初已全量推送 LAMBDA 函数,用法与 Excel 365 一致。示例定义:
=LAMBDA(
sheets,
LET(
n, SHEETS(),
seq, SEQUENCE(n),
MAP(seq, LAMBDA(i, MID(CELL("filename",INDEX(sheets,i)),FIND("]",CELL("filename",INDEX(sheets,i)))+1,255)))
)
)
保存为名称为 GetSheetNames 后,在任意单元格输入 =GetSheetNames() 即可纵向溢出全部工作表名称。注意:该函数为动态数组,依赖计算链全量刷新,文件含大量公式时可能出现数十秒级延迟(经验性观察,验证方法:在 200 张工作表、每张 10 k 行数据环境下,冷启动重新计算耗时明显长于 20 张表的小文件)。
平台差异与回退方案
1. 若你仍在使用 2024 之前的老版本(无 LAMBDA),可退回到“定义名称 + EVALUATE”宏表函数方案,但必须将文件另存为 .xlsm 且允许宏,在禁用宏的企业电脑上会被安检软件直接拦截,因此不推荐。
2. macOS 版 WPS 目前 CELL 函数仅支持 "address" 参数,无法返回文件名,只能借助 AppleScript 或手动维护清单,建议切换到 Windows 虚拟机或远程桌面。
不适用场景清单
- 文件已启用“非常严格的隐私模式”,
CELL被策略禁用,会统一返回空字符串; - 工作表名称含右方括号
]导致文本截取错位,需要改用更复杂的正则或 SUBSTITUTE 嵌套; - 需要一次性导出名称到外部数据库或 REST API,纯公式无法跨进程写库,应改用 VBA/JS 宏或 Power Query。
最佳实践检查表(可直接打印贴屏)
- 在模板文件里预置“锚点”公式,锁定 A1 单元格,防止同事误删;
- 把目录工作表设为“只读”保护,仅开放公式区域,避免手动输入覆盖;
- 每月新增分表后,先检查
SHEETS()计数是否与目录行数一致,差异>1 即触发预警; - 关闭“自动计算”仅建议在最终汇总环节手动按 F9,防止大文件频繁刷新卡顿;
- 重命名工作表后,立即另存为新版本,旧版本留档,确保审计可追溯。
故障排查:公式返回 #REF! 或空白
现象:目录页某行突然空白。
可能原因:对应分表 A1 被删除或插入行列导致锚点移位。
验证:在目录页公式栏按 F2 再按 Enter,观察状态栏是否提示“无法引用”。
处置:回到分表,按 Ctrl+G 定位“锚点”名称,重新在 A1 填入公式,目录即恢复。
FAQ:必须用宏吗?能自动刷新吗?
公式方案是否 100% 无需宏?
是的,CELL 与 LAMBDA 均属内置函数,文件可保存为 .xlsx,企业安检无宏告警。
重命名工作表后,目录会自己更新吗?
会,但需触发一次计算(按 F9 或输入任意单元格),关闭自动计算时不会实时刷新。
最多能支持多少张工作表?
经验性观察:300 张以内刷新速度可接受;超过 500 张建议改用 Power Query 或分区文件。
收尾:下一步行动建议
如果你只是临时做季度汇总,直接用“锚点公式+三维引用”十分钟就能交付;当模板需要长期迭代、且表量可能破百,就在本周内测试 LAMBDA 溢出方案,确认刷新耗时是否可接受。任何情况下,把“目录工作表+锚点”写进团队 SOP,比追求一次全自动更可持续——毕竟审计首先问“为什么这张表不见了”,而不是“你用了多炫的函数”。
未来版本若原生支持 SHEETSNAME 或类似一次性返回数组的函数,上述 LAMBDA 递归即可退役;但在官方更新落地前,本文的纯公式组合仍是零宏环境里最稳的解法。建议把模板文件设为只读模板,随 WPS 月度更新同步验证兼容性,让“批量拿表名”不再成为合并报表的第一道拦路虎。


