在数组中按编号而不是名称引用工作表

use*_*180 8 excel vba excel-formula

让我们说 sheet3.name = "d"

有没有办法sheet2在公式=sum(sheet3!b:b)中放入一个单元格,sheet3用实际的sheet3名称代替?

=sum('d'!b:b)到目前为止我才能上班.

我可以使用VBA,但我很好奇如何在单元格中执行此操作,因此我不必每次都运行宏.

Sea*_*anC 7

在工作表中的任何位置使用以下公式来获取工作表名称 - 工作表必须具有此工作的文件名:

=REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"") 
Run Code Online (Sandbox Code Playgroud)

您可以使用间接引用该单元格:

=SUM(Indirect("'"&A1&"'!B:B"))
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想拥有第二个单元格,可以将两个公式合并为一个:

=SUM(INDIRECT("'"&REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"")&"'!B:B"))
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您可以使用将返回工作表名称的UDF 用户定义函数

Function SHEETNAME(number As Long) As String
    SHEETNAME = Sheets(number).Name
End Function
Run Code Online (Sandbox Code Playgroud)

那么一个公式就像

=SUM(INDIRECT(SHEETNAME(3) &"!B:B"))
Run Code Online (Sandbox Code Playgroud)

将返回表3中B列的总和.

SHEETNAME(number) 返回索引号的工作表名称.

所以Sheet(1)返回Sheet1等