我使用适用于 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))
然后向下拖动。如果您想隐藏工作簿名称,可以使用附加公式来解决这个问题。
|
|