在单元格中通过数字而不是名称引用表单

让我们说sheet3.name = "d"

是否有一种方法,我可以在sheet2的单元格公式=sum(sheet3!b:b) sheet3被replace为实际的sheet3名称?

我只能得到=sum('d'!b:b)到目前为止工作。

我可以使用VBA这可能,但我很好奇如何在单元格中这样做,所以我不必每次都运行macros。

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

 Function SHEETNAME(number As Long) As String SHEETNAME = Sheets(number).Name End Function 

那么像一个公式

 =SUM(INDIRECT(SHEETNAME(3) &"!B:B")) 

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

SHEETNAME(number)返回索引号码的表名。

所以Sheet(1)返回Sheet1等

在工作表的任何位置使用下面的公式来获取工作表名称 – 工作表必须有一个文件名才能工作:

 =REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"") 

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

 =SUM(Indirect("'"&A1&"'!B:B")) 

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

 =SUM(INDIRECT("'"&REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"")&"'!B:B")) 

我不确定这是不是一个好主意,但这是我能想到的第一个。

我会添加额外的function到您的VBA项目,这将返回您的Sheet3的实际名称:

 Function Sheet3Name() Sheet3Name = Sheet3.Name End Function 

接下来,当您在Excel单元格中创build列B:B的求和公式时,您需要这样做:

 =SUM(INDIRECT(Sheet3Name()&"!A:A"))