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

Google Sheets动态列表匹配表头并SUMIF求和的公式实现需求

Google Sheets动态表头匹配的批量SUMIF求和方案

问题场景

  • 存在两个工作表标签:
    1. 含多列动态列表及对应列表头的标签(下称「动态列表表」);
    2. 独立统计标签:
      • E列:从「动态列表表」中选择的条目
      • B列:对应条目的工作量数值
      • F列:筛选后的表头列表
  • 需求:在G列实现——对F列的每个表头,求和所有E列条目属于该表头对应动态列表的B列工作量,优先使用ARRAYFORMULA或LAMBDA函数实现,无需辅助标签。

解决方案

在统计标签的G2单元格输入以下公式,自动填充整列:

=ARRAYFORMULA(IF(F2:F="",,BYROW(F2:F,LAMBDA(header,SUMIFS(B:B,XLOOKUP(E:E,动态列表表!A:INDEX(动态列表表!ZZ:ZZ,COUNTA(动态列表表!1:1)),动态列表表!1:1,""),header)))))

公式解析

  1. 动态范围适配:动态列表表!A:INDEX(动态列表表!ZZ:ZZ,COUNTA(动态列表表!1:1))自动识别「动态列表表」中所有带表头的列,无需手动调整列范围;
  2. 条目归属表头匹配:XLOOKUP(E:E, ..., 动态列表表!1:1,"")为E列每个条目查找其在「动态列表表」中所属的表头;
  3. 批量求和:BYROW(F2:F,LAMBDA(header,SUMIFS(...)))遍历F列的每个表头,计算B列中对应条目归属表头与当前表头匹配的数值之和;
  4. 空值处理:IF(F2:F="",,...)避免F列空单元格返回无效求和结果。

替代简化方案(固定列范围)

如果「动态列表表」的列范围固定(比如A到C列),可使用更简洁的公式:

=ARRAYFORMULA(IF(F2:F="",,BYROW(F2:F,LAMBDA(header,SUMIFS(B:B,XLOOKUP(E:E,动态列表表!A:C,动态列表表!1:1,""),header)))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:42:45