我已经尝试了一些公式选项,但没有任何方法可以按照我的意愿进行。
我正在使用一个非常简单的SUM公式来汇总工作簿中的所有工作表。当前设置如下:
=SUM('1:10'!D3)
但是,我可能会添加更多工作表,希望它们包含在总数中。我尝试了在不同文章中找到的“ wshNameLast”或“ getlastwsname”的几个不同版本,但它们都给了我#REF错误。我可以在不使用VBA的情况下在这里输入公式吗?
感谢您的帮助!
有趣的问题。
@@@@@@@@@@@@@ BigBen对问题的评论>>>“最后有一个隐藏的空白工作表,只是引用它” >>>确实是实用且最简单的解决方案。
但是只是使其变得动态
参考..Jeffrey Weir's answer和Return array with Index Function
并由@Michal Rosa在对此问题的评论中建议How to generate list of Sheet Names
和@ashleedawg在对此问题的评论中建议的using indirect function to sum across multiple sheets
创建的工作簿包含5个工作表。
第一张纸是Sheet5
,最后一张是Sheet1
。
除第一张纸外,每张纸在B5
中都有值。
首先定义SheetNames
数组=GET.WORKBOOK(1)
的名称
然后,使用此公式很容易将所有工作表(包括第一张)的B5
中的值求和
=SUMPRODUCT(SUM(INDIRECT("'"&SheetNames&"'!B5")))
但是如果必须在Sheet5
的第一张图纸(B5
)中输入公式以求和所有剩余图纸的B5
,该怎么办。上面的公式返回循环误差。
可以在第一张图纸B5
中输入以下公式,以汇总第二张到最后一张的所有图纸。注意,其为array formula
。 (不带大括号的副本,然后用ctrl+shift+enter
输入)
{=SUMPRODUCT(SUM(INDIRECT("'"&INDEX(SheetNames,N(IF((1),ROW(INDIRECT(2&":"&SHEETS())))))&"'!B5")))}
[INDIRECT(2&":"&SHEETS())
以第二张纸开始数组,以最后一张纸结束(通过Sheets()函数计算的数字)]
因此,如果要从第3张纸开始数组/总和,请使用INDIRECT(3&":"&SHEETS())
和Ctrl+Shift+Enter