在 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 功能有助于根据您定义的条件过滤一系列数据。
有话要说...