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

如何在 Excel 中根据多个条件统计区域内唯一值的个数?

作者Xiaoyang修改日期

在许多实际场景中,往往不仅需要计数,还需统计满足特定条件的数据中有多少唯一项。例如,您可能希望了解某位销售人员售出了多少种不同的产品,或在特定时间段内下达了多少个唯一的订单。要在 Excel 中高效完成此类任务,需掌握合适的公式、高级功能(如数据透视表),甚至自定义的 VBA 解决方案。本文将为您介绍几种实用方法,用于根据一个或多个条件统计区域内唯一值的数量,并提供清晰的分步说明与实用技巧。

基于单一条件的统计区域中唯一值的个数

基于两个给定日期的统计区域中唯一值的个数

基于两个条件的统计区域中唯一值的个数

基于三个条件的统计区域中唯一值的个数

使用数据透视表的统计区域中唯一值的个数(非重复计数,Excel 2013+)

使用 VBA 代码的统计区域中唯一值的个数(适用于复杂/自动化场景)


蓝色右向箭头气泡基于单一条件的统计区域中唯一值的个数

让我们来看一个常见场景:您想统计 Tom 售出了多少种不同的产品。当您面对的是简单数据集,并希望基于单一条件(例如某位销售人员的记录)来评估唯一值数量时,这种方法非常适用。它直观明了,但需谨慎使用数组公式。

显示在 Excel 中基于一个条件统计唯一值的数据集的截图

在此场景中,请将以下公式输入空白单元格(例如 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 及更高版本,不妨尝试使用 UNIQUEFILTER 函数编写更简洁的公式。

如遇任何 #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 即可将其作为数组公式执行。下图展示了结果:

显示在 Excel 中统计两个日期之间唯一值结果的截图

注意

  • 2016,9,12016,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 确认,即可立即看到唯一计数;请参见下图:

显示在 Excel 中基于两个条件统计唯一值结果的截图

注意事项:

  • “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,即可看到如下所示的结果:

显示在 Excel 中基于“或”条件统计唯一值的截图

提示:应用“或”条件时请注意,若同一条记录同时满足两个条件,可能导致重复计数;处理大型数据集时,性能也可能受到影响。


蓝色右向箭头气泡统计区域中唯一值的个数基于三个条件

有时,您的分析可能需要三个或更多条件——例如,确定 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 的数据透视表解决方案。
  • 为所有条件使用命名区域或单元格引用,可显著提升公式可读性,并有效减少错误。
  • 若需频繁使用,建议将这些公式保存为命名单元格引用或自定义函数。

蓝色右向箭头气泡 统计区域中唯一值的个数结合数据透视表(唯一计数,Excel 2013+)

对于使用 Excel 2013 或更高版本的用户,数据透视表提供了一种更富交互性且无需公式的替代方案,可轻松统计满足一个或多个条件的区域中唯一值的数量。凭借强大的唯一计数功能,您能高效汇总并筛选大型数据集,尤其适用于动态报表环境。请注意,早期版本的 Excel 并不支持在数据透视表中使用唯一计数功能。

使用此方法的步骤:

  1. 选择您的数据集,然后依次点击插入 > 数据透视表
  2. 在“创建数据透视表”对话框中,选择数据透视表的放置位置,勾选“将此数据添加到数据模型”复选框,然后单击确定
  3. 将您希望计算唯一值的字段(例如“产品”)拖入“值”区域,默认会显示为“……的计数”。
  4. 单击“值”区域中的字段,然后选择值字段设置
  5. 在弹出的对话框中,向下滚动并选择非重复计数(此选项仅在 Excel 2013 或更高版本中可用,且仅在创建数据透视表时启用“将此数据添加到数据模型”选项才会显示)。
  6. 将您的条件字段(如销售人员、区域或日期)添加到“筛选器”或“行/列”区域,即可应用单个或多个筛选条件。
  7. 您的数据透视表现在将显示根据所选条件筛选后的唯一值数量。

优势:高度可视化,无需编辑公式即可轻松调整筛选器,轻松打造交互式报表。

局限性:不支持 Excel 2010 及更早版本;添加新数据后,需手动刷新数据透视表。

实用提示:请确保源数据中每条记录内不含非预期的重复项。若未找到唯一计数选项,请重新创建数据透视表,并勾选“将此数据添加到数据模型”选项。


蓝色右向箭头气泡 统计区域中唯一值的个数结合 VBA 代码(适用于复杂或自动化场景)

有时,您可能需要根据各种条件自动统计区域中唯一值的个数——尤其是在处理超大数据集或需频繁重复分析时。VBA 宏正是应对这类场景的理想选择:一旦设置完成,它就能快速执行包含多条件筛选在内的各类逻辑,全程无需人工干预。不过,VBA 相较于常规 Excel 功能更为高级,建议由熟悉宏操作或有持续分析需求的用户使用。

操作步骤:

  1. Alt + F11 打开 VBA 编辑器,然后选择插入 > 模块 以创建新模块。
  2. 将以下 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
  1. 关闭 VBA 编辑器并返回工作表,然后按 Alt + F8,选择 CountUniqueWithCriteria 并运行宏。
  2. 请根据输入提示,指定数据区域及筛选条件。结果将显示在您选定的单元格中,并同步以消息框形式呈现。

参数说明及注意事项:

  • 此宏当前仅处理单一条件。如需扩展至多个条件,请修改循环内的 If ... Then 逻辑。
  • 运行宏前,请务必备份工作簿,因为所做的更改无法撤销。
  • 如遇执行错误,请在 Excel 设置中启用宏。
  • 此方法适用于体量较大或频繁更新的数据集,这类场景下手动编写公式会显得繁琐。

优势:高度可定制且支持自动化,能高效处理大型及动态变化的数据集,轻松应对高级或重复性工作流需求。

缺点:需启用宏权限,初学者可能需要一些时间熟悉 VBA 操作。


在基于条件统计唯一值数量时,请务必确认区域引用是否正确,并确保所有条件列的范围大小一致。区域不匹配是导致错误或结果不准确的常见原因。若公式返回意外结果,请检查是否存在隐藏的格式问题或空白单元格。在对性能要求较高的场景中,数据透视表和 VBA 可作为数组公式的高效替代方案。请选择最契合您熟练程度与数据集复杂度的解决方案。别忘了,Kutools for Excel 还提供了更多实用工具与快捷操作,能进一步简化此类任务,助您在处理复杂工作簿时显著提升效率。

最佳办公效率工具

🤖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 天全功能试用— 无需注册,无需信用卡
  • 超值之选— 比单独购买插件更省钱