【发布时间】:2020-04-24 08:57:36
【问题描述】:
我正在尝试对我的 Excel 工作簿中所有有效工作表中的单元格 Y116 求和。为了帮助定义有效的工作表,我编写了一个 VBA 函数 SHEETNAME(number),它返回给定工作表索引(数字)处的工作表名称。我这样做是因为有效工作表的名称和数量永远不会保持不变,但是有效范围将始终从第三个工作表(即 SHEETNAME(3))开始,并将始终在最后一个工作表的第三个结束(即 SHEETNAME(SHEETS( )-2)) 在我的工作簿中。
我觉得 SUM() 和 INDIRECT() 都应该相对简单,但我不断收到引用错误 (#REF!)。
我可以使用
将字符串格式化为我想要的格式="'"&SHEETNAME(3)&":"&SHEETNAME(SHEETS()-2)&"'!Y116"
但是当我尝试将它们放在一起时出现参考错误:
=SUM(INDIRECT("'"&SHEETNAME(3)&":"&SHEETNAME(SHEETS()-2)&"'!Y116"))
我知道单元格 Y116 是我所有工作表中的有效参考,因为我可以使用工作表的实际名称而不是索引对公式进行硬编码,我得到了我正在寻找的答案。有什么建议吗?
这里是 SHEETNAME() 函数:
Function SHEETNAME(number As Long) As String
SHEETNAME = Sheets(number).Name
End Function
【问题讨论】:
-
@JNevill 您可以通过这种方式进行 3d 求和。
=SUM('Sheet1:Sheet3'!Y116)会做到这一点。 OP,请分享 UDFSHEETNAME()以便我们进行测试。 -
D*@# IT。在我职业生涯的几十年里,我怎么会发现这些事情。我需要 RTFM。谢谢@ScottCraner!
-
就我个人而言,我只会编写一个带有三个参数的 UDF。第一个工作表编号,结束工作表编号和单元格地址,然后只需迭代工作表并对单元格求和。跳过整个尝试做部分 udf 部分原生公式。
标签: excel excel-formula sum excel-indirect