use*_*180 8 excel vba excel-formula
让我们说
sheet3.name = "d"
有没有办法sheet2在公式=sum(sheet3!b:b)中放入一个单元格,sheet3用实际的sheet3名称代替?
=sum('d'!b:b)到目前为止我才能上班.
我可以使用VBA,但我很好奇如何在单元格中执行此操作,因此我不必每次都运行宏.
在工作表中的任何位置使用以下公式来获取工作表名称 - 工作表必须具有此工作的文件名:
=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等