我使用适用于 Microsoft 365 Ver. 2402 Build 16.0 的 Excel…. 32 位。

我有一个带有多个标签的工作簿。

有没有简单的方法来生成选项卡名称列表(列)?我必须创建脚本吗?

我需要每周执行一次此操作,每次使用不同的工作簿。


最佳答案
3

您可以在 Excel 中使用以下公式,但这需要将文件另存为或.xlsm.xlsb因为它使用Excel Macro 4.0 formulas

=TEXTAFTER(GET.WORKBOOK(1),"- ")

上述公式需要在中定义Name Manager为,SheetNames并将公式放在中refers to :,然后在单元格中输入以下公式以获得所需的输出

=TOCOL(SheetNames,3)

另一个选择是使用功能区的“自动化”选项卡和用 Office 脚本编写的此脚本:

function main(workbook: ExcelScript.Workbook) {
    const sheetNames: string[][] = workbook.getWorksheets().map(sheet => [sheet.getName()]);

    workbook
        .getActiveWorksheet()
        .getRangeByIndexes(0, 0, sheetNames.length, 1) // Adjust for your output range
        .setValues(sheetNames)
}

显示的示例会将工作表名称写入从活动工作表的 A1 单元格开始的范围。

调用.getRangeByIndexes是从零索引的,示例显示“从零行、零列开始,创建一个sheetNames.length行和 1 列的范围”。

因此,例如要从 B2 开始写,您可以这样做:

.getRangeByIndexes(1, 1, sheetNames.length, 1)

出于某种原因,@Mayukh Bhattacharya 的答案对我来说不起作用,所以这里有一个替代方案(虽然想法相同):

创建新的命名范围:

然后在单元格中A1执行公式:

=Index(sheetNames,row(a1))

然后向下拖动。如果您想隐藏工作簿名称,可以使用附加公式来解决这个问题。