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

如何在Excel中使用函数实现多列GROUP BY并统计分组计数(无需VBA)

用Excel函数实现多列分组计数(Fruit/Color/Vendor)

对应你提供的T-SQL分组逻辑:

SELECT Fruit, Color, Vendor, COUNT(*) AS Count
FROM FruitVendorTable
GROUP BY Fruit, Color, Vendor

下面提供两种纯函数实现方案,无需VBA:

方案1:Excel 365/2021 动态数组方案(最便捷)

  • 生成唯一分组组合:
    在空白区域的起始单元格(比如G2)输入公式:
    =UNIQUE(A2:C[最后行号])
    替换[最后行号]为你的台账数据实际结束行,公式会自动溢出所有不重复的Fruit、Color、Vendor组合。

  • 计算每组计数:
    在计数列的起始单元格(比如J2)输入公式:
    =BYROW(G2#:I2#, LAMBDA(row, COUNTIFS(A:A, INDEX(row,1), B:B, INDEX(row,2), C:C, INDEX(row,3))))
    这里G2#:I2#是第一步生成的动态数组范围,公式会自动为每一行分组计算对应计数,完全匹配T-SQL的结果。

方案2:旧版Excel(无动态数组支持)方案

如果你的Excel版本不支持动态数组,用辅助列+数组公式实现:

  • 添加辅助列生成唯一标识:
    在台账数据右侧新增一列(比如D列),D2输入:
    =A2&B2&C2
    下拉填充到所有数据行,把三列内容合并成一个唯一字符串标识每组。

  • 提取唯一分组标识:
    在空白区域的G2输入数组公式(输入后按Ctrl+Shift+Enter确认):
    =INDEX(D:D, MATCH(0, COUNTIF(G$1:G1, D:D), 0))
    下拉填充直到出现#N/A,这就是所有不重复的分组标识。

  • 还原分组列内容:

    • H2(Fruit):=INDEX(A:A, MATCH(G2, D:D, 0))
    • I2(Color):=INDEX(B:B, MATCH(G2, D:D, 0))
    • J2(Vendor):=INDEX(C:C, MATCH(G2, D:D, 0))
      下拉填充到对应行。
  • 计算每组计数:
    K2输入:
    =COUNTIF(D:D, G2)
    下拉填充即可得到每组的计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:35:08