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

统计区域中唯一值的个数在 Excel 中按条件统计

作者Siluvia修改日期

若需根据另一列的特定条件统计唯一值,可结合使用 SUM、FREQUENCY、MATCH 和 ROW 函数的数组公式。本分步指南将助您轻松解决公式应用中最棘手的问题。

按条件计数唯一值-1


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

如下面的产品表所示,部分产品在同一天于同一商店出现重复销售。现在,如果您想统计商店 A 售出的唯一产品数量,可以使用以下公式。

按条件计数唯一值-2

通用公式

{=SUM(--(FREQUENCY(IF(range=criteria,MATCH(vals,vals,0)),ROW(vals)-ROW(vals.firstcell)+1)>0))}

参数

区域:包含用于条件判断值的单元格范围;
条件:您希望基于此条件统计区域中唯一值的个数;
Vals:您想要统计区域中唯一值的个数的单元格区域;
Vals.firstcell:您想要统计区域中唯一值的个数的区域中第一个单元格。

注意:本公式需以数组公式的方式输入。应用后,若公式两侧出现大括号,则表示数组公式已成功创建。

如何使用这些公式?

1. 选择一个空白单元格,用于显示结果。

2. 在输入以下公式到该单元格后,同时按下 Ctrl+Shift+Enter 键,即可得出结果。

=SUM(--(FREQUENCY(IF(E3:E16=H3,MATCH(D3:D16,D3:D16,0)),ROW(D3:D16)-ROW(D3)+1)>0))

按条件计数唯一值-3

注意:本公式中,E3:E16 为判断条件的区域,H3 为条件值,D3:D16 为需要统计唯一值的区域,D3 是 D3:D16 区域的首个单元格。您可根据实际需求进行修改。

本公式是如何工作的?

{=SUM(--(FREQUENCY(IF(E3:E16=H3,MATCH(D3:D16,D3:D16,0)),ROW(D3:D16)-ROW(D3)+1)>0))}

  • IF(E3:E16=H3,MATCH(D3:D16,D3:D16,0)):
1)E3:E16=H3:这里判断值 A 是否存在于 E3:E16 区域,存在则返回 TRUE,不存在则为 FALSE。您将得到如下数组:{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;}。
2)MATCH(D3:D16,D3:D16,0):MATCH 函数获取 D3:D16 区域内各项首次出现的位置,返回如下数组:{1;2;3;2;1;1;3;2;1;1;1;2;3;2}。
  • IF({TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;},{1;2;3;2;1;1;3;2;1;1;1;2;3;2}):现在,数组 1 中每个为 TRUE 的位置,将返回数组 2 中对应的值;为 FALSE 的位置则返回 FALSE。这样,您将得到一个新数组,如 {1;FALSE;FALSE;2;FALSE;FALSE;3;FALSE;FALSE;1;FALSE;FALSE;3;FALSE}。
  • ROW(D3:D16)-ROW(D3)+1:这里,ROW 函数分别返回 D3:D16 和 D3 的行号,因此结果为 {3;4;5;6;7;8;9;10;11;12;13;14;15;16}-{3}+1.
  • 数组中的每个数字先减去 3,再加上 1,最终得到 {1;2;3;4;5;6;7;8;9;10;11;12;13;14}。
  • FREQUENCY({1;FALSE;FALSE;2;FALSE;FALSE;3;FALSE;FALSE;1;FALSE;FALSE;3;FALSE},{1;2;3;4;5;6;7;8;9;10;11;12;13;14}):此处 FREQUENCY 函数会返回给定数组中每个数字出现的次数,例如 {2;1;2;0;0;0;0;0;0;0;0;0;0;0}。
  • =SUM(--({2;1;2;0;0;0;0;0;0;0;0;0;0;0}>0)):
1){2;1;2;0;0;0;0;0;0;0;0;0;0;0}>0:数组中的每个数字与 0 比较,大于 0 则返回 TRUE,否则返回 FALSE。得到 TRUE/FALSE 数组:{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE};
2)--{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}:这两个负号会将 TRUE 转为 1,FALSE 转为 0. 最后得到新数组:{1;1;1;0;0;0;0;0;0;0;0;0;0;0}。
3)SUM{1;1;1;0;0;0;0;0;0;0;0;0;0;0}:SUM 函数将数组中的所有数字相加,并返回最终结果为 3.

相关函数

Excel SUM 函数
Excel SUM 函数用于将数值相加

Excel FREQUENCY 函数
Excel FREQUENCY 函数可统计数值在指定区间内出现的次数,并返回一个纵向数组。

Excel IF 函数
Excel IF 函数可轻松实现逻辑判断,根据对比结果返回相应的值:结果为 TRUE 时返回一个值,结果为 FALSE 时返回另一个值。

Excel MATCH 函数
Excel MATCH 函数可在单元格区域中查找指定值,并返回其相对位置。

Excel ROW 函数
Excel ROW 函数可返回指定引用的行号。


相关公式

在筛选列表中统计可见行数
本教程将为您详细讲解如何使用 Excel 的 SUBTOTAL 函数,轻松统计筛选列表中的可见行数。

统计区域中唯一值的个数
本教程将为您讲解如何通过指定公式,仅统计 Excel 列表中重复项里的唯一值。

按条件统计可见行数
本教程将为您详细讲解如何按条件统计可见行的具体操作步骤。

对非连续区域使用 COUNTIF
本分步指南将为您演示如何在 Excel 中对非连续区域使用 COUNTIF 函数。


这款最佳办公效率工具

Kutools for Excel —— 助您脱颖而出

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

Kutools for Excel 拥有超过 300 项功能,让您的需求一键轻松实现……


Office Tab —— 让 Microsoft Office(包括 Excel)支持标签式阅读与编辑

  • 一秒即可切换数十个已打开的文档!
  • 每天为您减少上百次鼠标点击,轻松告别鼠标手困扰。
  • 查看和编辑多个文档时,工作效率提升 50%。
  • 为 Office(包括 Excel)引入高效标签页,让您同样畅享如 Chrome、Edge 和 Firefox 般的便捷体验。