0049

之前我们学习了如何计算范围内的唯一值。我们还学习了如何从范围中提取唯一值。在本文中,我们将学习如何在Excel中根据条件计算范围内的唯一值。

通用公式

{=SUM(--(FREQUENCY(IF(condition,MATCH(range,range,0)),ROW(range)-ROW(firstCell in range)+1)>0))}

_这是一个数组公式,请使用CTRL + SHIFT + ENTER_条件:要获取唯一值的条件。

范围:要获得唯一值的范围。

范围内的firstCell:它是范围内第一个单元格的引用。

如果范围为A2:A10,则为A2。

示例:

在这里,我有姓名的数据。相邻列中提到了相应的类。我们需要在每个类中计算唯一的名称。

0050

使用以上通用公式将此公式写在E2中

{=SUM(--(FREQUENCY(IF(B2:B19="Class 1",MATCH(A2:A19,A2:A19,0)),ROW(A2:A19)-ROW(A2)+1)>0))}

上面的公式在B2:B19 =“ Class 1”的条件下返回excel范围A2:A19中的唯一值。

0051

要获得不同类别中的唯一值,请更改条件。我们已经在这里对其进行了硬编码,但是您也可以提供单元格引用。如果您不希望它们发生太大变化,请使用命名范围或绝对引用作为范围。

如何运作?

让我们从内部分解它。

link:/ tips-if-condition-in-excel [IF](B2:B19 =“ Class 1”,link:/ lookup-formulas-excel-match-function [MATCH](A2:A19,A2 :A19,0))B2:B19 =“ Class 1” *:此部分将返回true和false数组。

每次比赛都为TRUE。

\ {TRUE; FALSE; TRUE; FALSE; TRUE; TRUE; FALSE …​.}`link:/ lookup-formulas-excel-match-function [MATCH]`(A2:A19,A2:A19,0)*:

这部分将根据MATCH的属性返回范围A2:A19中每个值的第一个位置。

\ {1; 2; 1; 4; 5; 4; 1; 8; 9; 1; 2; 1; 4; 5; 4; 1; 8; 9}。

现在,对于每个TRUE值,我们将获得头寸;对于false,我们将获得FALSE。因此,对于整个IF语句,我们将得到\ {1; FALSE; 1; FALSE; 5; 4; FALSE; FALSE; FALSE; FALSE; 2; FALSE; FALSE; 5; FALSE; 1; 8; FALSE}。

接下来我们转到频率部分。

FREQUENCY(链接:/ tips-if-condition-in-excel [IF](B2:B19 =“ Class 1”,链接: / lookup-formulas-excel-match-function [MATCH](A2:A19,A2:A19,0)),link:/ lookup-and-reference-excel-row-function [ROW](A2:A19 )-link:/ lookup-and-reference-excel-row-function [ROW](A2)+1)link:/ lookup-and-reference-excel-row-function [ROW](A2:A19 ):*这将返回范围A2:A19中每个单元格的行号。

\ {2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19}`link:/ lookup-and-reference-excel- row-function (A2:A19)-`link:/ lookup-and-reference-excel-row-function [ROW](A2):

现在我们从每个行号中减去第一行号。这将返回一个从0开始的序列号数组。 \ {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17}由于我们想要从1开始的序列号,加1。

链接:/ lookup-and-reference-excel-row-function (A2:A19)-`link:/ lookup-and-reference-excel-row-function [ROW](A2)+1。

这给了我们一个从1开始的序列号数组。

| \ {1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18}这将帮助我们获得条件上的唯一计数。

现在我们有:

链接:/ statistical-formulas-excel-frequency-function-2 [FREQUENCY]`(\ {1; FALSE; 1; FALSE; 5; 4; FALSE; FALSE; FALSE; FALSE; 2; FALSE; FALSE; 5; FALSE; 1; 8; FALSE},* \ {1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18})

|这将返回给定数组中每个数字的频率。\ {3; 1; 0; 1; 2; 0; 0; 1; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0 }这里每个正数表示满足条件时唯一值的出现。我们需要在该数组中计数大于0的值。

为此,我们将其检查> 0。这将返回TRUE和FALSE。我们使用-(双二进制运算符)将true转换为false。

link:/ math-and-trig-excel-sum-function [SUM](-(\ {3; 1; 0; 1; 2; 0; 0; 1; 0; 0; 0; 0; 0 ; 0; 0; 0; 0; 0; 0; 0})> 0)转换为SUM(\ {1; 1; 0; 1; 1; 0; 0; 1; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0})

最后,我们得出标准范围内名称的唯一计数为5。

我知道要理解它有点复杂,但是您可以从公式评估选项中进行检查。

要使用多个条件对唯一值进行计数,我们可以使用布尔逻辑:

用和逻辑

计算具有多个条件的唯一值

上述通用公式可以在多个条件下以及所有条件都为真时计算唯一值。

{=SUM(--(FREQUENCY(IF(condition1 * Condition2,MATCH(range,range,0)),ROW(range)-ROW(firstCell in range)+1)>0))}

用或逻辑

计算具有多个条件的唯一值

此通用公式可用于通过“或”逻辑对唯一值进行计数。

{=SUM(--(FREQUENCY(IF(condition1 + Condition2,MATCH(range,range,0)),ROW(range)-ROW(firstCell in range)+1)>0))}

这意味着它将计算是否满足任何条件。

是的,这就是您如何在多个条件下计算范围内的唯一值的方法。这有点复杂,但速度很快。一旦开始使用它,您将了解它的工作原理。

如果您对此excel公式文章有任何疑问,请在下面的评论部分中告诉我。

相关文章:

链接:/ lookup-formulas-excel-formula从列表中提取唯一值[Excel公式从列表中提取唯一值]

link:/ counting-count-unique-values-in-excel [在Excel中计算唯一值]

热门文章:

link:/ vlookup-functions / formulas-and-functions-introduction- [Excel中的VLOOKUP函数]

link:/ tips-countif-in-microsoft-excel [Excel 2016中的COUNTIF]