根据条件在 Excel 中计算唯一数值的数量
Author: Xiaoyang Last Modified: 2025-05-07
在 Excel 工作表中,您可能会遇到一个问题,即根据特定条件计算唯一数值的数量。例如,如何从如下截图所示的报告中计算产品“T恤”的唯一数量值呢?在本文中,我将展示一些公式来帮助您在 Excel 中实现此任务。
在 Excel 2019、2016 及更早版本中根据条件计算唯一数值的数量
在 Excel 2019 及更早版本中,您可以结合使用 SUM、FREQUENCY 和 IF 函数创建一个公式,以根据条件计算唯一值的数量,其通用语法为:
{=SUM(--(FREQUENCY(IF(criteria_range=criteria,range),range)>0))}
数组公式,需同时按下 Ctrl + Shift + Enter 键。
数组公式,需同时按下 Ctrl + Shift + Enter 键。
- criteria_range: 要匹配指定条件的单元格范围;
- criteria: 您希望基于其计算唯一值的条件;
- range: 包含要计数的唯一值的单元格范围。
请将以下公式应用到空白单元格中,并按下 Ctrl + Shift + Enter 键以获取正确结果,如下截图所示:
=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))
公式的解释:
=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))
- IF(A2:A12=E2,C2:C12): 此 IF 函数返回列 A 中产品为“T恤”时列 C 中的值,结果是一个类似这样的数组:{FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;FALSE;350}。
- FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)= FREQUENCY({FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;FALSE;350},{200;300;500;350;400;450;300;550;200;260;350}): FREQUENCE 函数用于统计数组列表中的每个数值出现的次数,并返回如下结果:{0;2;1;1;1;0;0;0;0;0;0;0}。
- --(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0)=--({0;2;1;1;1;0;0;0;0;0;0;0}>0): 测试数组中的每个值是否大于 0,并得到如下结果:{FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}。然后,双负号将 TRUE 和 FALSE 转换为 1 和 0,返回类似这样的数组:{0;1;1;1;1;0;0;0;0;0;0;0}。
- SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))=SUM({0;1;1;1;1;0;0;0;0;0;0;0}): 最后,使用 SUM 函数将这些值相加,并得到总数:4。
提示:
如果要根据多个条件计算唯一值的数量,只需使用 * 符号将其他条件添加到公式中即可:
=SUM(--(FREQUENCY(IF((criteria,_range1=criteria1)* (criteria,_range2=criteria2)*…,range),range)>0))
在 Excel 365 中根据条件计算唯一数值的数量
在 Excel 365 中,ROWS、UNIQUE 和 FILTER 函数的组合可以帮助根据条件计算唯一数值的数量,其通用语法为:
=ROWS(UNIQUE(FILTER(range,criteria_range=criteria)))
- range: 包含要计数的唯一值的单元格范围。
- criteria_range: 要匹配指定条件的单元格范围;
- criteria: 您希望基于其计算唯一值的条件;
请将以下公式复制或输入到单元格中,并按 Enter 键返回结果,如下截图所示:
=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))
公式的解释:
=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))
- A2:A12=E2: 此表达式检查单元格 E2 的值是否存在于范围 A2:A12 中,并得到如下结果:{FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}。
- FILTER(C2:C12,A2:A12=E2): FREQUENCE 函数用于统计数组列表中的每个数值出现的次数,并返回如下结果:{0;2;1;1;1;0;0;0;0;0;0;0}。
- UNIQUE(FILTER(C2:C12,A2:A12=E2))=UNIQUE({300;500;400;300;350}): 在这里,UNIQUE 函数用于从列表数组中提取唯一值,得到如下结果:{300;500;400;350}。
- ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))=ROWS({300;500;400;350}): ROWS 函数根据单元格范围或数组返回行数,因此结果为:4。
提示:
1. 如果数据范围内不存在匹配值,您将得到错误值,要将错误值替换为 0,请使用以下公式:
=IFERROR(ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2))), 0)
2. 要根据多个条件计算唯一值的数量,只需使用 * 符号将其他条件添加到公式中,如下所示:
=ROWS(UNIQUE(FILTER(range,(criteria_range1=criteria1)* (criteria_range2=criteria2)*…)))
相关函数:
- SUM:
- Excel SUM 函数返回提供的值的总和。
- FREQUENCY:
- FREQUENCY 函数计算值在值范围内出现的频率,然后返回一个垂直数组的数字。
- ROWS:
- ROWS 函数返回给定引用或数组中的行数。
- UNIQUE:
- UNIQUE 函数返回列表或范围内的唯一值列表。
- FILTER:
- FILTER 函数根据您定义的条件帮助筛选一系列数据。
更多文章:
- 计算一列中的唯一数值或日期的数量
- 假设您有一列包含一些重复项的数字列表,现在您想计算唯一值的数量或仅在列表中出现一次的值,如下截图所示。在本文中,我们将讨论一些有用的公式,帮助您在 Excel 中快速轻松地完成此任务。
- 计算两列之间的所有匹配项/重复项
- 比较两列数据并计算两列中的所有匹配项或重复项可能是我们大多数人的常见任务。例如,您有两列名称,其中一些名称同时出现在第一列和第二列中,现在您想计算两列之间所有匹配的名称(匹配项可以位于两列中的任何位置),如下截图所示。本教程将介绍一些公式,帮助您在 Excel 中实现这一目标。
- 计算等于多个值之一的单元格数量
- 假设我在列 A 中有一个产品列表,现在我想从列 A 中获取特定产品 Apple、Grape 和 Lemon(列在范围 C4:C6 中)的总数,如下截图所示。通常,在 Excel 中,简单的 COUNTIF 和 COUNTIFS 函数在此场景中不起作用。本文将讨论如何通过结合使用 SUMPRODUCT 和 COUNTIF 函数快速轻松地解决此问题。
最佳的办公生产力工具
Kutools for Excel - 助您脱颖而出
🤖 | Kutools AI 助手:基于以下功能彻底改变数据分析方式:智能执行 | 生成代码 | 创建自定义公式 | 分析数据并生成图表 | 调用Kutools函数… |
热门功能: 查找、高亮或标记重复项 | 删除空行 | 合并列或单元格而不丢失数据 | 四舍五入无需公式 ... | |
超级VLookup: 多条件 | 多值 | 跨多个工作表 | 模糊查找... | |
高级下拉列表: 简易下拉列表 | 级联下拉列表 | 多选下拉列表... | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较列以 选择相同和不同的单元格 ... | |
精选功能:网格聚焦 | 设计视图 | 增强编辑栏 | 工作簿与工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按列表发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/斜体/删除线...) ... | |
排名前15的工具集: 12个 文本 工具(添加文本,删除特定字符 ...) | 50多种 图表 类型(甘特图 ...) | 40多种实用 公式(基于生日计算年龄 ...) | 19个 插入 工具(插入二维码,从路径插入图片 ...) | 12个 转换 工具(小写金额转大写,汇率转换 ...) | 7个 合并与拆分 工具(高级合并行,分割Excel单元格 ...) | ... 还有更多 |
Kutools for Excel拥有超过300种功能,确保您需要的功能只需一键即可实现...
Office Tab - 在Microsoft Office(包括Excel)中启用标签式阅读和编辑
- 一秒内切换数十个打开的文档!
- 每天为您减少数百次鼠标点击,告别鼠标手。
- 在查看和编辑多个文档时,您的工作效率将提高50%。
- 为Office(包括Excel)带来高效的标签页,就像Chrome、Edge和Firefox一样。