在单元格中通过数字而不是名称引用表单
让我们说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"))