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

如何用ArrayFormula实现列表条目匹配后自动求和(无匹配返回0)

Google Sheets 数组公式实现匹配求和方案

问题拆解

针对A列的每个固定条目,匹配F列中相同的字母,对对应G列的数值求和;若F列无匹配项则返回0,且必须用数组公式一次性计算所有结果。

你之前的公式失效原因

  • 第一个QUERY公式语法错误:QUERY函数没有WHEN关键字,正确逻辑需用WHERE筛选匹配项,且分组与筛选的逻辑顺序有误。
  • 第二个SUMIFS数组公式:SUMIFS默认不支持数组条件批量返回结果,直接套ARRAYFORMULA无法生成对应每个A列条目的求和结果。

可行方案

方案1:QUERY + VLOOKUP 组合(易读性高)

在Sheet2的结果列首单元格(比如B2)输入:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A, QUERY(F4:G, "select F, sum(G) where F is not null group by F"), 2, 0), 0))
  • 内层QUERY(F4:G, "select F, sum(G) where F is not null group by F"):对F-G列的月度数据按字母分组求和,自动过滤F列空值(对应当月分数为0的情况)。
  • 外层VLOOKUP(A2:A, ..., 2, 0):用A列每个条目匹配分组后的结果,获取对应求和值。
  • IFERROR(..., 0):匹配不到时返回0,替代默认的#N/A错误。

方案2:MMULT 纯数组运算

如果想用MMULT实现,公式如下:

=ARRAYFORMULA(MMULT(--(TRANSPOSE(F4:F)=A2:A), G4:G))
  • --(TRANSPOSE(F4:F)=A2:A):将F列转置后与A列每个条目做匹配,生成布尔矩阵,--把TRUE/FALSE转为1/0。
  • MMULT(..., G4:G):通过矩阵乘法,把每行的1/0与G列数值相乘后求和,得到每个A列条目的对应总和。
  • 若F列空值较多,可添加过滤优化:=ARRAYFORMULA(MMULT(--(TRANSPOSE(FILTER(F4:F, F4:F<>""))=A2:A), FILTER(G4:G, F4:F<>"")))

使用说明

把公式粘贴到Sheet2结果列的第一个单元格,数组公式会自动向下填充所有A列条目的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:25:53