如何在 Excel 中根据多个条件统计区域内唯一值的个数?
在许多实际场景中,往往不仅需要计数,还需统计满足特定条件的数据中有多少唯一项。例如,您可能希望了解某位销售人员售出了多少种不同的产品,或在特定时间段内下达了多少个唯一的订单。要在 Excel 中高效完成此类任务,需掌握合适的公式、高级功能(如数据透视表),甚至自定义的 VBA 解决方案。本文将为您介绍几种实用方法,用于根据一个或多个条件统计区域内唯一值的数量,并提供清晰的分步说明与实用技巧。
使用数据透视表的统计区域中唯一值的个数(非重复计数,Excel 2013+)
使用 VBA 代码的统计区域中唯一值的个数(适用于复杂/自动化场景)
基于单一条件的统计区域中唯一值的个数
让我们来看一个常见场景:您想统计 Tom 售出了多少种不同的产品。当您面对的是简单数据集,并希望基于单一条件(例如某位销售人员的记录)来评估唯一值数量时,这种方法非常适用。它直观明了,但需谨慎使用数组公式。

在此场景中,请将以下公式输入空白单元格(例如 G2 单元格):
=SUM(IF("Tom"=$C$2:$C$20,1/(COUNTIFS($C$2:$C$20, "Tom", $A$2:$A$20, $A$2:$A$20)),0))
输入公式后,按 Ctrl + Shift + Enter(而非仅按 Enter)将其确认为数组公式。公式栏中将立即显示花括号,结果也会同步呈现,如下图所示:

注意:
- “Tom” 是您用于筛选结果的条件。若希望更灵活,可将其替换为对其他单元格的引用(例如 $F$2)。
- $C$2:$C$20 包含待评估的销售人员姓名。
- $A$2:$A$20 是您希望用于计算唯一值的产品列。
- 如果您的数据区域发生变化,请务必相应调整引用。
提示:如果您使用的是 Excel 365 或 Excel 2019 及更高版本,不妨尝试使用 UNIQUE 和 FILTER 函数编写更简洁的公式。
如遇任何 #DIV/0! 错误,请仔细检查条件,并确保所选区域长度一致。
基于两个给定日期的统计区域中唯一值的个数
当您需要统计特定日期范围内(例如 2016/9/1 至 2016/9/30)的唯一项数量(如该期间售出的所有唯一产品)时,可使用此方法。它在分析月度、季度或自定义日期范围等特定时期的数据趋势时尤为实用。但请注意,所用日期格式必须与工作表中的日期值完全一致。
将以下公式放入您希望显示结果的空白单元格中:
=SUM(IF($D$2:$D$20=DATE(2016,9,1)),1/COUNTIFS( $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "="&DATE(2016,9,1))),0)
输入公式后,按 Ctrl + Shift + Enter 即可将其作为数组公式执行。下图展示了结果:

注意:
- 2016,9,1 和 2016,9,30 为起始与结束日期条件。您可根据需要修改这些条件,甚至可通过单元格引用实现动态日期筛选。
- $D$2:$D$20 包含待检查的日期条目。
- $A$2:$A$20 再次作为您希望用于计算唯一值的项目或产品列。
- 请确保您的日期以有效的 Excel 日期格式存储,而非文本字符串。若结果未如预期显示,请检查日期格式及范围是否正确。
提示:使用 DATE(年, 月, 日) 可避免区域性日期格式问题;在使用动态区域时,建议采用命名区域以提升清晰度。
基于两个条件的统计区域中唯一值的个数
假设您希望仅分析 Tom 在九月份售出的产品,可将姓名与日期范围结合,纳入唯一计数中。此类场景常用于基于周期的绩效评估或细分分析。随着条件增多,公式会变得更加复杂,数据准确性也愈发关键。
将以下公式输入任意空白单元格(例如 H2):
=SUM(IF(("Tom"=$C$2:$C$20)*($D$2:$D$20=DATE(2016,9,1))),1/COUNTIFS($C$2:$C$20, "Tom", $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "="&DATE(2016,9,1))),0)
输入公式后,按 Ctrl + Shift + Enter 确认,即可立即看到唯一计数;请参见下图:

注意事项:
- “Tom” 为姓名筛选条件,而 “2016,9,1” 和 “2016,9,30” 则是您设定的日期范围边界。您可以根据实际需求进行调整,或通过单元格引用实现动态更新。
- $C$2:$C$20 为员工(或其他首要条件)所在列;$D$2:$D$20 为日期列;$A$2:$A$20 包含需计数的唯一项目。
- 所有区域的长度必须一致,以避免出错。
如果您希望使用“或”条件(例如统计由 Tom 销售或在南部区域销售的唯一产品数量),可使用以下公式。这种方式支持更宽泛的搜索条件,但若数据同时满足两个条件,结果可能会出现重叠:
=SUM(--(FREQUENCY(IF(("Tom"=$C$2:$C$20)+("South"=$B$2:$B$20), COUNTIF($A$2:$A$20, "0))
别忘了按下 Ctrl + Shift + Enter,即可看到如下所示的结果:

提示:应用“或”条件时请注意,若同一条记录同时满足两个条件,可能导致重复计数;处理大型数据集时,性能也可能受到影响。
统计区域中唯一值的个数基于三个条件
有时,您的分析可能需要三个或更多条件——例如,确定 Tom 在 9 月仅在北部区域销售的唯一产品数量。这在用于报表或定向业务洞察的多维数据分析中十分常见。处理此类复合逻辑时,精准管理引用至关重要。
将此数组公式放入空白单元格中(例如 I2):
=SUM(IF(("Tom"=$C$2:$C$20)*($D$2:$D$20=DATE(2016,9,1))*("North"=$B$2:$B$20),1/COUNTIFS($C$2:$C$20, "Tom", $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "="&DATE(2016,9,1), $B$2:$B$20, "North")),0)
按 Ctrl + Shift + Enter 即可完成。以下是供您参考的示例结果:

对于高级条件,请仔细核对所有区域是否一致,并确认数据类型(如日期、文本等)是否正确——错位可能导致错误或产生误导性结果。
提示:
- 如果在处理大型数据集时遇到性能问题,请考虑拆分公式,或使用 Excel 的数据透视表解决方案。
- 为所有条件使用命名区域或单元格引用,可显著提升公式可读性,并有效减少错误。
- 若需频繁使用,建议将这些公式保存为命名单元格引用或自定义函数。
统计区域中唯一值的个数结合数据透视表(唯一计数,Excel 2013+)
对于使用 Excel 2013 或更高版本的用户,数据透视表提供了一种更富交互性且无需公式的替代方案,可轻松统计满足一个或多个条件的区域中唯一值的数量。凭借强大的唯一计数功能,您能高效汇总并筛选大型数据集,尤其适用于动态报表环境。请注意,早期版本的 Excel 并不支持在数据透视表中使用唯一计数功能。
使用此方法的步骤:
- 选择您的数据集,然后依次点击插入 > 数据透视表。
- 在“创建数据透视表”对话框中,选择数据透视表的放置位置,勾选“将此数据添加到数据模型”复选框,然后单击确定。
- 将您希望计算唯一值的字段(例如“产品”)拖入“值”区域,默认会显示为“……的计数”。
- 单击“值”区域中的字段,然后选择值字段设置。
- 在弹出的对话框中,向下滚动并选择非重复计数(此选项仅在 Excel 2013 或更高版本中可用,且仅在创建数据透视表时启用“将此数据添加到数据模型”选项才会显示)。
- 将您的条件字段(如销售人员、区域或日期)添加到“筛选器”或“行/列”区域,即可应用单个或多个筛选条件。
- 您的数据透视表现在将显示根据所选条件筛选后的唯一值数量。
优势:高度可视化,无需编辑公式即可轻松调整筛选器,轻松打造交互式报表。
局限性:不支持 Excel 2010 及更早版本;添加新数据后,需手动刷新数据透视表。
实用提示:请确保源数据中每条记录内不含非预期的重复项。若未找到唯一计数选项,请重新创建数据透视表,并勾选“将此数据添加到数据模型”选项。
统计区域中唯一值的个数结合 VBA 代码(适用于复杂或自动化场景)
有时,您可能需要根据各种条件自动统计区域中唯一值的个数——尤其是在处理超大数据集或需频繁重复分析时。VBA 宏正是应对这类场景的理想选择:一旦设置完成,它就能快速执行包含多条件筛选在内的各类逻辑,全程无需人工干预。不过,VBA 相较于常规 Excel 功能更为高级,建议由熟悉宏操作或有持续分析需求的用户使用。
操作步骤:
- 按 Alt + F11 打开 VBA 编辑器,然后选择插入 > 模块 以创建新模块。
- 将以下 VBA 代码复制并粘贴到该模块中:
Sub CountUniqueWithCriteria()
Dim DataRange As Range
Dim CriteriaRange As Range
Dim CriteriaValue As Variant
Dim Dict As Object
Dim i As Long
Dim UniqueCount As Long
Dim ResultCell As Range
Set Dict = CreateObject("Scripting.Dictionary")
' Prompt for range settings
Set DataRange = Application.InputBox("Select data range (items to count):", "KutoolsforExcel", Type:=8)
Set CriteriaRange = Application.InputBox("Select criteria range (e.g. Salesperson):", "KutoolsforExcel", Type:=8)
CriteriaValue = Application.InputBox("Enter criteria value:", "KutoolsforExcel", "", Type:=2)
Set ResultCell = Application.InputBox("Select cell for result output:", "KutoolsforExcel", Type:=8)
On Error Resume Next
For i = 1 To DataRange.Rows.Count
If CriteriaRange.Cells(i, 1).Value = CriteriaValue Then
If Not Dict.Exists(DataRange.Cells(i, 1).Value) Then
Dict.Add DataRange.Cells(i, 1).Value, 1
End If
End If
Next i
UniqueCount = Dict.Count
ResultCell.Value = UniqueCount
MsgBox "Unique count for '" & CriteriaValue & "': " & UniqueCount, vbInformation, "KutoolsforExcel"
End Sub - 关闭 VBA 编辑器并返回工作表,然后按 Alt + F8,选择 CountUniqueWithCriteria 并运行宏。
- 请根据输入提示,指定数据区域及筛选条件。结果将显示在您选定的单元格中,并同步以消息框形式呈现。
参数说明及注意事项:
- 此宏当前仅处理单一条件。如需扩展至多个条件,请修改循环内的
If ... Then逻辑。 - 运行宏前,请务必备份工作簿,因为所做的更改无法撤销。
- 如遇执行错误,请在 Excel 设置中启用宏。
- 此方法适用于体量较大或频繁更新的数据集,这类场景下手动编写公式会显得繁琐。
优势:高度可定制且支持自动化,能高效处理大型及动态变化的数据集,轻松应对高级或重复性工作流需求。
缺点:需启用宏权限,初学者可能需要一些时间熟悉 VBA 操作。
在基于条件统计唯一值数量时,请务必确认区域引用是否正确,并确保所有条件列的范围大小一致。区域不匹配是导致错误或结果不准确的常见原因。若公式返回意外结果,请检查是否存在隐藏的格式问题或空白单元格。在对性能要求较高的场景中,数据透视表和 VBA 可作为数组公式的高效替代方案。请选择最契合您熟练程度与数据集复杂度的解决方案。别忘了,Kutools for Excel 还提供了更多实用工具与快捷操作,能进一步简化此类任务,助您在处理复杂工作簿时显著提升效率。
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 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 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱