巴士文案网—你身边的文案专家

巴士文案网—你身边的文案专家

如何获取工作表名字

59

一、使用公式获取单个工作表名称

基本公式法

结合`CELL`、`MID`和`FIND`函数提取路径中的工作表名称:

```excel

=MID(CELL("filename", A1), FIND("]", CELL("filename", A1)) + 1, LEN(CELL("filename", A1)))

```

该公式通过定位路径中最后一个右括号后的位置,截取后续字符作为工作表名称。

简化公式法

使用`RIGHT`函数直接提取名称部分:

```excel

=RIGHT(CELL("filename", A1), LEN(CELL("filename", A1)) - FIND("]", CELL("filename", A1)))

```

适用于路径格式规范的情况。

二、批量获取所有工作表名称

SHEETSNAME函数

适用于快速提取当前工作簿所有名称:

```excel

=SHEETSNAME()

```

可指定输出方向(0横向/1纵向)和是否包含当前工作表。

动态数组公式(适用于Excel 365/2019)

使用`TEXTJOIN`和`INDIRECT`函数:

```excel

=TEXTJOIN(", ", TRUE, INDIRECT("Sheet" & ROW(1:100)))

```

适用于需要生成名称列表供其他操作(如超链接)的场景。

三、使用VBA自动化提取

基础代码

通过VBA宏批量获取名称并输出到指定区域:

```vba

Sub ListSheetNames()

Dim ws As Worksheet

Dim name As String

Dim i As Integer

For Each ws In ThisWorkbook.Worksheets

name = ws.Name

Cells(i + 1, 1).Value = name

i = i + 1

Next ws

End Sub

```

运行后,工作表名称将出现在A列。

添加超链接(进阶)

可在获取名称的同时插入超链接:

```vba

Sub ListSheetNamesWithLinks()

Dim ws As Worksheet

Dim name As String

Dim i As Integer

For Each ws In ThisWorkbook.Worksheets

name = ws.Name

Cells(i + 1, 1).Value = name

Cells(i + 1, 2).Hyperlink = ThisWorkbook.Sheets(name).Name

i = i + 1

Next ws

End Sub

```

适用于需要快速跳转的工作表管理场景。

四、注意事项

文件格式限制:

部分方法(如通过`GET.WORKBOOK`)仅适用于`.xlsm`宏表文件。

性能优化:对于大型工作簿,建议使用VBA或Power Query以提高效率。

以上方法可根据具体需求选择使用,公式适合快速查看,VBA和Power Query适合批量处理和自动化任务。