Note: The other languages of the website are Google-translated. Back to English
English English

根据 Excel 中的条件计算唯一数值

在 Excel 工作表中,您可能会遇到根据特定条件计算唯一数值数量的问题。 例如,如何从报告中计算产品“T 恤”的唯一数量值,如下图所示? 在本文中,我将展示一些在 Excel 中实现此任务的公式。


根据 Excel 2019、2016 及更早版本中的条件计算唯一数值

在 Excel 2019 及更早版本中,您可以组合 SUM、FREQUENCY 和 IF 函数来创建用于根据条件计算唯一值的公式,通用语法为:

{=SUM(--(FREQUENCY(IF(criteria_range=criteria,range),range)>0))}
Array formula, should press Ctrl + Shift + Enter keys together.
  • 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):如果 A 列中的产品是“T 恤”,则此 IF 函数返回 C 列中的值,结果是这样的数组:{FALSE;300;500;FALSE;400;FALSE;300;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:您要基于的唯一值计数条件;

请将以下公式复制或输入到单元格中,然后按 输入 返回结果的关键,请参见屏幕截图:

=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)*…)))

使用的相对功能:

  • 和:
  • Excel SUM 函数返回提供的值的总和。
  • 频率:
  • FREQUENCY 函数计算值在一个值范围内出现的频率,然后返回一个垂直的数字数组。
  • 行:
  • ROWS 函数返回给定引用或数组中的行数。
  • 独特的:
  • UNIQUE 函数返回列表或范围中的唯一值列表。
  • 过滤:
  • FILTER 功能有助于根据您定义的条件过滤一系列数据。

更多文章:

  • 计算列中的唯一数值或日期
  • 假设您有一个包含一些重复项的数字列表,现在,您想要计算唯一值的数量,或者这些值在列表中只出现一次,如下面的屏幕截图所示。 在本文中,我们将讨论在 Excel 中快速轻松地解决此任务的一些有用公式。
  • 计算两列之间的所有匹配/重复项
  • 比较两列数据并计算两列中的所有匹配项或重复项可能是我们大多数人的常见任务。 例如,您有两列名称,有些名称同时出现在第一列和第二列中,现在,您想要计算两列之间所有匹配的名称(位于两列内任何位置的匹配项),如下图所示,本教程将介绍一些在 Excel 中实现这一目标的公式。
  • 计数单元格数等于多个值之一
  • 假设,我在 A 列中有一个产品列表,现在,我想从 A 列中获取列在 C4:C6 范围内的特定产品 Apple、Grape 和 Lemon 的总数,如下图所示。 通常,在 Excel 中,简单的 COUNTIF 和 COUNTIFS 函数在这种情况下不起作用。 这篇文章,我将谈谈如何通过 SUMPRODUCT 和 COUNTIF 函数的组合快速轻松地解决这个工作。

最佳办公效率工具

Kutools for Excel-帮助您从人群中脱颖而出

您想快速,完美地完成日常工作吗? Kutools for Excel具有300项强大的高级功能(合并工作簿,按颜色求和,拆分单元格内容,转换日期等),并为您节省80%的时间。

  • 专为1500个工作方案而设计,可帮助您解决80%的Excel问题。
  • 每天减少成千上万的键盘和鼠标点击,减轻您疲倦的眼睛和手部的疲劳。
  • 在3分钟内成为一名Excel专家。 不再需要记住任何痛苦的公式和VBA代码。
  • 30天无限制免费试用。 60天退款保证。 免费升级和支持2年。
Excel功能区(已安装Kutools for Excel)

Office选项卡-在Microsoft Office(包括Excel)中启用选项卡式阅读和编辑

  • 一秒钟即可在数十个打开的文档之间切换!
  • 每天为您减少数百次鼠标单击,告别鼠标手。
  • 查看和编辑多个文档时,可将您的工作效率提高50%。
  • 像Chrome,Firefox和新的Internet Explorer一样,为Office(包括Excel)带来高效选项卡。
Excel的屏幕截图(已安装Office选项卡)
按评论排序
注释 (0)
还没有评分。 成为第一位评论!
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点