You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel的MAIN工作表中自动获取所有工作表名称(新增时自动更新)

在Excel的MAIN工作表中列出所有其他工作表名称的方法

以下是几种实用的实现方式,覆盖不同Excel版本需求:

方法一:动态数组公式(Excel 365/2021及以上)

适合需要自动刷新的场景,无需复杂操作:

  1. 打开MAIN工作表,选中要放置列表的起始单元格(例如A2)
  2. 输入以下公式并按回车,公式会自动溢出所有非MAIN的工作表名称:
=FILTER(MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255),MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255)<>"MAIN")
  • 说明:GET.WORKBOOK(1)获取所有工作表的完整标识(含工作簿名),MID提取纯工作表名称,FILTER排除MAIN工作表
  • 首次输入会弹出安全提示,需启用宏表函数权限;新增/删除工作表后按F9刷新列表

方法二:VBA宏(全Excel版本通用)

适合需要完全自动化更新的场景:

基础宏(手动触发更新)

  1. 按下Alt+F11打开VBA编辑器
  2. 右键点击左侧工程窗口中的目标工作簿,选择「插入」→「模块」
  3. 粘贴以下代码:
Sub ListSheetNames()
    Dim ws As Worksheet, mainWs As Worksheet
    Dim rowNum As Integer
    
    Set mainWs = ThisWorkbook.Worksheets("MAIN")
    '清空A列原有列表(从A2开始)
    mainWs.Range("A2:A" & mainWs.Cells(mainWs.Rows.Count, "A").End(xlUp).Row).ClearContents
    
    rowNum = 2
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "MAIN" Then
            mainWs.Cells(rowNum, "A").Value = ws.Name
            rowNum = rowNum + 1
        End If
    Next ws
End Sub
  1. 回到Excel,按下Alt+F8选择ListSheetNames并执行,即可生成列表

自动更新(工作表变动时自动刷新)

在VBA编辑器的ThisWorkbook模块中粘贴以下代码,新增/删除/切换工作表时会自动更新MAIN中的列表:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    ListSheetNames
End Sub

Private Sub Workbook_SheetNew(ByVal Sh As Object)
    ListSheetNames
End Sub

Private Sub Workbook_SheetDelete(ByVal Sh As Object)
    ListSheetNames
End Sub

方法三:手动快速生成(临时需求)

如果只是需要一次性生成列表:

  1. 右键点击任意工作表标签,选择「选定全部工作表」,然后点击MAIN标签取消选中
  2. 复制这些选中的工作表标签名称(右键→「复制」),粘贴到MAIN工作表的单元格中即可

内容的提问来源于stack exchange,提问作者Hellihansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:08:26