我很苦恼,我有一个 Excel 工作簿,里面有无数个工作表;每个工作表都有自己独特的、非连续的名称。我想使用它们的索引而不是名称来引用这些工作表。我该怎么做?
答案1
我找到了答案这里。它包括两个阶段:
阶段 1:编写一个通过索引获取工作表名称的函数
- 调出 VBA(Visual Basic for Applications)窗口(例如按Alt+ F11)。
- 插入一个新的代码模块(例如在菜单上:插入>模块)。
- 将出现新模块的子窗口。在文本区域中,插入以下代码:
Function SHEETNAME(number As Long) As String SHEETNAME = Sheets(number).Name End Function
- 退出 VBA 窗口。
第 2 阶段:使用该SHEETNAME()
函数
您可能希望现在能够编写如下公式:
=SHEETNAME(12).B3
不幸的是,这不起作用,因为 SHEETNAME() 返回的是字符串,而不是工作表。您需要使用 Excel 的间接查找功能,如下所示:
=INDIRECT("'"&SHEETNAME(12) &"'!B3")
这将是对工作簿中第 12 个工作表 B 行第 3 列单元格的引用。
笔记:工作表编号以 1 为基础。