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

如何在Excel/LibreOffice中实现类SQL的GROUP BY+HAVING条件统计

跨办公软件实现类SQL GROUP BY+HAVING分组统计方案

适用场景

  • 不需要枚举A列所有取值,仅统计A列指定目标值的对应聚合结果
  • 新增/删除表格行时自动重算
  • 无需使用数据透视表

核心公式(D3单元格直接输入)

=SUMPRODUCT((A:A=D2)*(C:C="是")/COUNTIFS(A:A,A:A,B:B,B:B))

输入后直接回车即可得到目标结果8,不需要按数组公式组合键触发。

公式逻辑拆解

  • (A:A=D2)*(C:C="是"):前置筛选出A列匹配指定统计值、C列满足"是"条件的行,对应SQL中WHERE子句的筛选逻辑
  • COUNTIFS(A:A,A:A,B:B,B:B):统计每一行对应的(A列值+B列值)组合在全表的出现次数,用1除以该次数即可实现重复分组项的去重,等价于GROUP BY后的去重计数逻辑
  • SUMPRODUCT函数自动遍历所有行完成累加,天然支持跨软件的数组运算,不需要额外配置

兼容性验证

  • Excel 2007及以上全版本支持
  • LibreOffice Calc全版本支持
  • Google Sheets原生支持

大数据量优化写法

如果单表数据量超过1万行,可结合你已掌握的COUNTA、OFFSET函数做动态范围引用,避免整列引用的性能损耗,优化后写法:

=SUMPRODUCT(
  (OFFSET(A1,1,0,COUNTA(A:A)-1,1)=D2)*
  (OFFSET(C1,1,0,COUNTA(A:A)-1,1)="是")/
  COUNTIFS(
    OFFSET(A1,1,0,COUNTA(A:A)-1,1),OFFSET(A1,1,0,COUNTA(A:A)-1,1),
    OFFSET(B1,1,0,COUNTA(A:A)-1,1),OFFSET(B1,1,0,COUNTA(A:A)-1,1)
  )
)

该写法会自动识别A列实际非空数据范围,跳过空白行,大表计算效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:01:58