Google Sheets动态列表匹配表头并SUMIF求和的公式实现需求
Google Sheets动态表头匹配的批量SUMIF求和方案
问题场景
- 存在两个工作表标签:
- 含多列动态列表及对应列表头的标签(下称「动态列表表」);
- 独立统计标签:
- 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)))))
公式解析
- 动态范围适配:
动态列表表!A:INDEX(动态列表表!ZZ:ZZ,COUNTA(动态列表表!1:1))自动识别「动态列表表」中所有带表头的列,无需手动调整列范围; - 条目归属表头匹配:
XLOOKUP(E:E, ..., 动态列表表!1:1,"")为E列每个条目查找其在「动态列表表」中所属的表头; - 批量求和:
BYROW(F2:F,LAMBDA(header,SUMIFS(...)))遍历F列的每个表头,计算B列中对应条目归属表头与当前表头匹配的数值之和; - 空值处理:
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
相关产品推荐
相关产品推荐

