我可以轻松地对给定的单元格求和,比如说B9,跨多个工作表,例如:
=SUM(Sheet7:Sheet11!B9)
这相当于:
=Sheet7!B9+Sheet8!B9+Sheet9!B9+Sheet10!B9+Sheet11!B9
这是细胞的总和B9在所有工作表中工作表7通过表 11。
我需要创建类似第一个公式的东西,但单元格中包含工作表名称。因此,如果A1包含:
工作表7
和细胞A2包含:
表 11
然后公式A3将使用这些单元格。到目前为止,我尝试过的是:
=SUM(A1 & ":" & A2 & "!" & B9)
和
=SUM(INDIRECT(A1 & ":" & A2 & "!" & B9))
这些都不起作用。
我可以轻松创建一个 VBA 函数来执行此操作,但工作簿必须能够在无宏的环境中运行。
答案1
根据@Dave的回答和您的评论,But I don't know in advance what the contents of cells A1 and A2 will be.......so I don't know how many terms to include.
我建议添加一列以包含每张工作表的总数并对该列求和。假设您在列中输入工作表名称A
,然后在列中输入B
:
=IF(ISNUMBER(INDIRECT(A2&"!B9")),INDIRECT(A2&"!B9"),0)
然后您就可以=Sum(B:B)
得到总数了。
请注意,我添加了IF
andISNUMBER
函数以避免#REF!
A 列缺少工作表名称时出现这种情况。您可能希望改用ISBLANK
,如下所示
=IF(ISBLANK(A2),0,INDIRECT(A2&"!B9"))
如果您确实希望在 A 列包含错误的工作表名称时收到错误消息。
另一个提示:如果您将工作表命名为 Sheet1、Sheet2,则可以轻松拖动以填充 A 列中的工作表
答案2
这是一种手动方法,可能并不理想
=INDIRECT(A1&"!A1")+INDIRECT(A2&"!A1")
或者
=SUM(INDIRECT(A1&"!A1"),INDIRECT(A2&"!A1"))
我的工作表看起来像
A B C
1 sheet2
2 sheet3
3
Sheet2 中的 A1 有值,Sheet3 中的 A1 也有值
就你的情况而言,你需要
=SUM(INDIRECT(A1&"!A1"),INDIRECT(A2&"!A1"),INDIRECT(A3&"!A1"),INDIRECT(A4&"!A1")...etc)