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

如何用ArrayFormula实现带日期范围多条件的SUMIF求和?

Google Sheets 多条件动态求和(自动更新)

针对你需要按列C类别、列A日期范围对列B求和,且无需下拉公式、新增数据自动更新的需求,以下是几个可行的数组公式方案:

方案1:MAP + SUMIFS(灵活自定义类别)

如果你有预先维护的类别列表(比如在E2:E列),起止日期分别在G1和H1,在F2单元格输入以下公式即可自动计算每个类别的总和:

=ArrayFormula(IF(E2:E="",,MAP(E2:E,LAMBDA(category,SUMIFS(B:B,C:C,category,A:A,">="&G1,A:A,"<="&H1)))))
  • 逻辑:通过MAP遍历E列的每个类别,用SUMIFS匹配日期范围和类别条件,返回对应求和结果;IF函数处理空类别单元格,避免生成无效值。
  • 优势:支持自定义类别列表,新增类别或数据时自动刷新计算。

方案2:QUERY函数(自动分组求和)

如果不需要手动维护类别列表,希望直接提取日期范围内所有存在的类别并自动求和,使用QUERY更简洁:

=ArrayFormula(QUERY(A:C,"select C, sum(B) where A >= date '"&TEXT(G1,"yyyy-mm-dd")&"' and A <= date '"&TEXT(H1,"yyyy-mm-dd")&"' group by C label sum(B) '总计'",1))
  • 逻辑:通过SQL风格的查询语句筛选日期范围,按C列类别分组求和,自动返回类别和对应的总计列。
  • 优势:无需手动维护类别,自动识别所有有效类别,输出结果直接包含类别和求和值。

方案3:SUMPRODUCT + ArrayFormula(兼容旧版环境)

如果你的Google Sheets不支持LAMBDA系列函数(如MAP),可以用传统的SUMPRODUCT实现:

=ArrayFormula(IF(E2:E="",,SUMPRODUCT(--(C:C=E2:E),--(A:A>=G1),--(A:A<=H1),B:B)))
  • 逻辑:通过--将布尔条件转换为数值(1/0),用SUMPRODUCT计算符合所有条件的B列数据总和;ArrayFormula实现批量计算。
  • 优势:兼容性强,适用于不支持新函数的环境。

注意事项

  • 确保G1、H1为标准日期格式,避免文本格式导致日期匹配失败。
  • 若数据量较大,建议用具体单元格范围(如A2:C1000)替代整列(A:C),提升计算效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:52:18