You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

谷歌表格如何在工作表名不固定时按单元格条件跨表求和

方案1:原生公式实现(无需脚本,优先推荐)

适用新版Google Sheets,无需提前列出工作表名称,新增工作表后自动更新统计结果。
假设你的汇总表名称为「汇总」,汇总表A列是提前确定的统计项(如A2为Rent、A3为Save),各发薪周期工作表的统计项存放在B列、对应数值存放在A列,在汇总表B2单元格输入以下公式后下拉即可:

=REDUCE(0, SEQUENCE(SHEETS()), LAMBDA(acc, sheet_idx, 
  LET(
    sheet_name, SHEETNAME(sheet_idx),
    // 跳过汇总表自身避免循环计算
    IF(sheet_name = "汇总", acc, 
      acc + IFERROR(SUMIF(INDIRECT("'"&sheet_name&"'!B:B"), A2, INDIRECT("'"&sheet_name&"'!A:A")), 0)
    )
  )
))

公式逻辑说明:

  • SEQUENCE(SHEETS()) 自动生成当前所有工作表的序号
  • SHEETNAME(sheet_idx) 根据序号读取工作表名称,无需手动录入
  • IFERROR 兼容没有对应统计项的工作表,无匹配项时自动加0不影响最终结果
    如果你的统计项、数值所在列有调整,修改公式中B:B(统计项列)、A:A(数值列)即可。

方案2:自定义脚本实现(兼容旧版表格)

如果你的Google Sheets版本不支持上述新函数,可以用Apps Script实现自定义函数:

  1. 点击顶部菜单栏「扩展程序」->「Apps 脚本」打开脚本编辑器
  2. 清空默认代码,粘贴以下内容:
function SUM_ALL_SHEETS(searchKey) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheets = ss.getSheets();
  let total = 0;
  // 此处i从1开始默认跳过第一个工作表(汇总表),如果汇总表位置有变化自行调整
  for (let i = 1; i < sheets.length; i++) {
    const sheet = sheets[i];
    const itemCol = sheet.getRange("B:B").getValues();
    for (let row = 0; row < itemCol.length; row++) {
      if (itemCol[row][0] === searchKey) {
        // 统计项对应数值在A列,列号1对应A列,有调整自行修改
        total += sheet.getRange(row + 1, 1).getValue();
      }
    }
  }
  return total;
}
  1. 点击保存按钮,按提示完成权限授权后回到表格
  2. 在汇总表B2单元格输入=SUM_ALL_SHEETS(A2),下拉填充到其他统计项即可。新增工作表后刷新页面就会自动更新统计结果。

内容的提问来源于stack exchange,提问作者Ginger McMurray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:54:02