Google Sheets动态求和需求:跨多表自动汇总无需固定命名与数量
动态汇总Google Sheets多工作表数据的解决方案
我刚好遇到过类似的需求,这里有两个可行的方案,不需要固定工作表数量或严格命名规则,完美适配你的场景:
方案一:用自定义函数+动态求和公式(推荐)
这个方案通过自定义函数获取所有工作表名称,再结合SUMPRODUCT和INDIRECT实现动态求和,步骤如下:
1. 创建获取工作表名称的自定义函数
- 打开你的Google Sheets,点击顶部菜单的「工具」>「脚本编辑器」
- 在弹出的编辑器里粘贴以下代码:
function GET_SHEET_NAMES() { return SpreadsheetApp.getActiveSpreadsheet().getSheets().map(sheet => sheet.getName()); }
- 点击编辑器顶部的保存按钮,给脚本起个名字(比如
SheetNameHelper),然后关闭编辑器。
2. 编写动态求和公式
回到结果工作表,在需要汇总的单元格(比如C3)中输入以下公式:
=SUMPRODUCT(INDIRECT("'"&FILTER(GET_SHEET_NAMES(), GET_SHEET_NAMES()<>"结果")&"'!"&ADDRESS(ROW(), COLUMN())))
然后你可以把这个公式拖拽填充到整个C3:G22区域(对应你说的每行5单元格、每列20单元格的范围),每个单元格都会自动汇总所有非结果工作表对应位置的数值。
公式原理:
GET_SHEET_NAMES():调用自定义函数返回当前工作簿所有工作表的名称数组FILTER(..., GET_SHEET_NAMES()<>"结果"):过滤掉结果工作表,只保留需要汇总的目标表INDIRECT("'"&表名&"'!"&ADDRESS(ROW(), COLUMN())):将每个工作表名称转换成对应单元格的引用(比如'P1'!C3)SUMPRODUCT:对所有目标单元格的数值求和
注意事项:
- 第一次使用自定义函数时,会弹出授权提示,按照指引完成授权即可
- 当你添加/删除工作表,或者修改工作表名称时,公式会自动更新(如果没自动刷新,按
Ctrl+R手动刷新即可) - 如果工作表名称包含特殊字符(比如单引号),需要调整公式处理,但这种情况很少见
方案二:无需脚本的变通方法(适合不想授权脚本的场景)
如果你不想使用自定义函数,可以用CELL函数结合手动维护工作表名称列表的方式,步骤如下:
- 在结果工作表的某个空白区域(比如
Z1:Z100)手动列出所有需要汇总的工作表名称(比如P1、P2...) - 在目标单元格(比如
C3)输入公式:
=SUMPRODUCT(INDIRECT("'"&Z1:Z8&"'!C3"))
这里的Z1:Z8是你维护的工作表名称范围,你可以根据实际数量调整。
这种方法的缺点是需要手动更新工作表名称列表,但好处是不需要授权脚本。
内容的提问来源于stack exchange,提问作者Benjamin Parry
相关产品推荐
相关产品推荐

