KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何在 Excel 中按组对数据进行计数?

作者修改日期

在 Excel 中,对简单范围内的数值进行总计数对大多数用户来说是一项常见且直观的任务。然而,在许多实际应用场景中(例如销售报表、库存清单或员工数据),信息通常按组组织,如产品类别、部门或区域。此时,您往往不仅需要计算整体总数,还需统计每个组内的出现次数。这种需求在汇总和分析分组数据以生成报表或支持数据驱动决策时尤为普遍。尽管 Excel 并未提供一个明确标为“按组计数”的单一按钮或内置函数,但仍有多种可靠且高效的方法可实现这一目标。

以下是您在 Excel 中按组统计数量的实用方法,适用于不同用户需求与技能水平——从开箱即用的内置功能、灵活多变的公式方案,到高效自动化的 VBA 解决方案。每种方法各具优势,助您轻松匹配具体工作表场景,选出最合适的方式。

使用数据透视表按组计数数据
使用 VBA 代码按组计数数据
使用 Excel 公式(COUNTIF/COUNTIFS)按组计数数据


使用数据透视表按组计数数据

数据透视表是快速汇总大型数据集的绝佳工具,尤其适合按不同类别进行统计,例如轻松计算每个组中的项目数量。如果您手头有一份冗长的销售交易列表,并希望迅速了解每种产品的销售次数,数据透视表无疑是最快捷、最实用的选择之一。

假设您拥有如下所示的数据集,并希望按组统计出现次数(例如统计每个项目或类别的出现次数):

原始数据的截图

1. 选择包含要计数的组和数据的整个数据区域,然后点击 Excel 功能区中的插入> 数据透视表> 数据透视表。参见截图:

创建数据透视表的截图

2. 在创建数据透视表对话框中,选择将数据透视表放置在新工作表或现有工作表中。若选择现有工作表,请务必选取一个不会干扰现有数据的空白单元格。参见截图:

选择数据透视表放置位置的截图

3. 单击确定后,Excel 窗口右侧将显示数据透视表字段列表窗格。将组列标题(例如“项目”或“类别”)同时拖动到行标签区域。默认情况下,值区域将使用“计数”函数,显示每个条目的出现次数。参见截图:

在数据透视表中添加字段的截图

您将立即看到一份报告,Excel 已自动对您的数据进行分组,并显示每个组的计数。这能直观呈现各类别中项目、产品或记录的分布情况,助您一目了然掌握数据全貌。若原始数据集有更新,请记得刷新数据透视表,以确保所有更改及时反映。

结果的截图

提示与注意事项:如果您的数据源区域包含空白行或列,请在创建数据透视表时务必将其排除,以免影响分组的准确性。数据透视表提供了一种直观的数据汇总方式;但若您需要在其他公式或工作表中复用结果,或希望获得更灵活的报表,不妨考虑以下基于公式或 VBA 的解决方案。


使用 VBA 代码按组计数数据

如果您的工作簿需要频繁对不同分组的数据进行计数和生成报告,或希望为大型数据集及重复性任务实现自动化,不妨使用 VBA 脚本。VBA(Visual Basic for Applications)可帮助您自定义并自动化 Excel 操作,轻松创建报告、汇总信息或导出分组计数结果,大幅减少手动干预。

注意事项:在运行任何新的 VBA 代码前,请务必备份您的工作。VBA 虽然能实现强大的自动化功能,但若配置不当,可能会覆盖数据。

1. 转到开发工具选项卡 >Visual Basic 以打开 VBA 编辑器。在弹出的窗口中,单击插入 > 模块,并将以下代码粘贴到模块窗口中:

Sub GroupCount()
    Dim dict As Object
    Dim lastRow As Long
    Dim groupCol As Range
    Dim groupCell As Range
    Dim outputRow As Long
    Dim key As Variant
    
    Set dict = CreateObject("Scripting.Dictionary")
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    ' Change Sheet1 and column as needed
    With Worksheets("Sheet1")
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        Set groupCol = .Range("A2:A" & lastRow)
        
        For Each groupCell In groupCol
            If Not dict.Exists(groupCell.Value) Then
                dict(groupCell.Value) = 1
            Else
                dict(groupCell.Value) = dict(groupCell.Value) + 1
            End If
        Next groupCell
        
        outputRow = 2
        .Cells(1, "C").Value = "Group"
        .Cells(1, "D").Value = "Count"
        
        For Each key In dict.Keys
            .Cells(outputRow, "C").Value = key
            .Cells(outputRow, "D").Value = dict(key)
            outputRow = outputRow + 1
        Next key
    End With
End Sub

2. 要执行代码,请在 VBA 编辑器中按 F5 或单击运行按钮“运行”按钮。该脚本将扫描“Sheet 1”工作表 A 列(从 A2 开始)的分组数据,统计各组数量,并将汇总结果输出至 C 列和 D 列(从第 2 行开始)。

注意事项:您可以根据实际工作簿调整“Sheet 1”、列引用及输出位置。若数据中包含空单元格或特殊情况,请务必核对结果以确保准确无误。若重复的分组名称拼写不同(例如“Apple”与“apple”),系统将视其为不同分组。如需实现自定义分组(如不区分大小写、排序输出或更复杂的逻辑),可能需进一步扩展 VBA 代码。

VBA 最适合用于自动化那些可重复执行的任务——尤其是在处理大型或频繁更新的数据集时,手动汇总不仅耗时,还极其繁琐。如果遇到“对象变量未设置”或“下标超出范围”等错误,请务必确认您的工作表和区域引用与实际数据结构保持一致。


使用 Excel 公式(COUNTIF/COUNTIFS)按组计数数据

对于偏好直接在工作表网格中操作,或需要基于公式的动态解决方案以支持进一步计算和引用的用户,Excel 的 COUNTIF 和 COUNTIFS 函数提供了高效之选。当您希望分组计数在底层数据变动时自动更新,或将结果直接置于数据旁以便参考或深入分析时,这些函数尤为实用。

示例场景:假设您的数据位于 A 列(分组名称)和 B 列(值)中,希望统计每个分组的出现次数。

1. 在数据旁侧的新列中(例如单元格 C2),输入以下公式,即可计算每行对应组的计数:

=COUNTIF($A$2:$A$100, A2)

2. 输入公式后,按 Enter。要将此公式应用到所有行,请从单元格 C2 向下拖动填充柄以填充相邻数据区域,或双击填充柄即可自动填充。该公式将返回当前行所属组的出现次数。

3. 如果您希望获取所有组的唯一列表及其对应计数,请先提取唯一的分组名称(例如,根据您的 Excel 版本,使用)删除重复功能或 UNIQUE 公式),再对唯一列表应用 COUNTIF 公式。

参数说明:在上述公式中,$A$2:$A$100 是包含分组名称的区域,请根据实际数据调整该区域;A2 是当前行组值所在的单元格引用。

此公式解决方案极具灵活性:既可用于筛选列表、排序数据,也能与其他计算无缝结合。但请注意,若应用于超大数据集,重新计算可能会耗费额外时间。

COUNTIFS 可用于按多个条件计数,轻松应对更复杂的分组场景(例如同时按类别和地区分组)。


相关文章:


最佳办公效率工具

🤖KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行   |  生成代码|  创建自定义公式  |  数据分析及生成图表|  调用 Kutools Functions……
热门功能查找、高亮或标记重复项   |  删除空白行   |  合并列或单元格且不丢失数据   |  不使用公式的四舍五入……
高级 LOOKUP多条件 VLookup  |  多值 VLookup  |   跨多工作表 VLookup   |   模糊查找……
高级下拉列表快速创建下拉列表   |  级联下拉列表   |  多选下拉列表……
列管理器添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列……
特色功能网格聚焦   |  设计视图   |增强编辑栏   | 工作簿和表管理器   |  资源库(自动文本)|  日期提取   |  汇总工作表  |  加密/解密单元格   | 按列表发送邮件   |  超级筛选   |   特殊筛选(筛选粗体单元格/斜体/删除线……) ......
精选 15 工具集12 文本工具添加文本删除特定字符,……)|   50+ 图表 类型甘特图,……)|   40+ 实用公式基于生日计算年龄,……)|   19 插入工具插入二维码从路径插入图片,……)|   12 转换工具小写金额转大写汇率转换,……)|   7 合并和拆分工具高级合并行分割单元格,……)|……更多
在您的首选语言中使用 Kutools – 支持英语、西班牙语、德语、法语、中文及 40+ 种其他语言!

使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……


Office Tab 为 Office 带来标签式界面,让您的工作更轻松

  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读
  • 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
  • 将您的工作效率提升 50%,每天减少数百次鼠标点击!

所有 Kutools 插件,一个安装程序

Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。

ExcelWordOutlookTabsPowerPoint
  • 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
  • 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
  • 协同效果更佳— 在多个 Office 应用中实现高效协同
  • 30 天全功能试用— 无需注册,无需信用卡
  • 超值之选— 比单独购买插件更省钱