当前位置:首页 > 科技 > 正文

Excel技巧应用篇:根据条件计算唯一数值

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

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

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

{=SUM(--(FREQUENCY(IF(criteria_range=criteria,range),range)>0))}
Array formula, should pressCtrl + Shift + Enterkeys 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 功能有助于根据您定义的条件过滤一系列数据。

你可能想看:

有话要说...

取消
扫码支持 支付码