好吧,我们已经使用COUNTIF和SUMPRODUCT函数计算了唯一值。尽管该方法很容易,但是当数据很大时,它的速度很慢。在本文中,我们将学习如何使用更快的公式

0041

在excel中计算唯一文本值。

用于计算excel

中唯一文本值的通用公式

=SUM(--(FREQUENCY(MATCH(range,range,0),ROW(first_cell_in_range)+1)>0))

范围:您要从中获得唯一值的范围。

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

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

让我们看一个例子,使事情变得清楚。

示例:计算唯一文本值Excel

在Excel工作表中,我具有名称数据在A2:A10范围内。我想从给定范围中获取唯一名称的数量。

0042

在此处应用上述通用公式以计算excel范围A2:A10中的唯一文本。我已将A2:A10命名为名字。

=SUM(--(FREQUENCY(MATCH(names,names,0),ROW(A2)+1)>0))

这将返回范围A2:A10中的唯一文本总数。

0043

如何运作?

让我们从内部解决它。

MATCH(names,names,0)*:

此部分将根据MATCH的属性返回范围A2:A10(名称)中每个值的第一个位置。

\ {1; 1; 3; 3; 5; 5; 7; 7; 7}。

ROW(A2:A19):这将返回范围A2:A10中每个单元格的行号。

\ {2; 3; 4; 5; 6; 7; 8; 9; 10}`link:/ lookup-and-reference-excel-row-function (names)-`link:/ lookup-and -reference-excel-row-function [ROW](A2):

现在我们从每个行号中减去第一行号。这将返回一个从0开始的序列号数组。 \ {0; 1; 2; 3; 4; 5; 6; 7; 8}由于我们要使用从1开始的序列号,因此要在其中添加1。

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

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

| \ {1; 2; 3; 4; 5; 6; 7; 8; 9}这将帮助我们获得唯一的条件计数。

现在我们有:

链接:/ statistical-formulas-excel-frequency-function-2 [FREQUENCY]`(* \ {1; 1; 3; 3; 5; 5; 7; 7; 7},\ {1; 2; 3; 4; 5; 6; 7; 8; 9})。

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

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

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

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

如何计算空白单元格范围内的唯一文本?

上面的公式的问题是,当您在范围内有空白单元格时,它将弹出#N / A错误。为了解决这个问题,我们需要提供一个条件来检查空白单元格。

这将给出正确的输出。在这里,我们用IF函数封装了MATCH。您可以阅读文章如何在具有多个条件的Excel中计算唯一值吗?

=SUM(--(FREQUENCY(IF(names <> “”,MATCH(names,names,0)),ROW(A2)+1)>0))

好的,这就是您如何在excel中获得唯一文本数的方法。如果您对此或任何其他高级excel / vba主题有任何疑问,请告诉我。评论部分向您开放。

下载文件: