Excel公式:计算范围内的唯一文本值

220 多个excel快捷键速查表,适用Windows和Mac。工作效率提高10倍。免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

Excel formula: Count unique text values with criteria

通用公式

=SUMPRODUCT(–(FREQUENCY(MATCH(data,data,0),ROW(data)-ROW(data.firstcell)+1)>0))

概括

要计算一个范围内的唯一文本值,您可以使用一个公式,该公式使用多个函数:FREQUENCY、MATCH、ROW和SUMPRODUCT。在所示示例中,F5 中的公式为:

=SUMPRODUCT(–(FREQUENCY(MATCH(B5:B14,B5:B14,0),ROW(B5:B14)-ROW(B5)+1)>0))

它返回 4,因为 B5:B14 中有 4 个唯一名称。

注意:计算唯一值的另一种方法是使用 COUNTIF 函数。这是一个简单得多的公式,但它可以在大型数据集上运行缓慢。借助Excel 365,您可以使用基于UNIQUE的更简单、更快速的公式。

解释

此公式比使用 FREQUENCY计算唯一数值的类似公式更复杂,因为 FREQUENCY 不适用于非数值。结果,公式的很大一部分只是将非数字数据转换为 FREQUENCY 可以处理的数字数据。

从内到外,MATCH 函数用于获取出现在数据中的每个项目的位置:

MATCH(B5:B14,B5:B14,0)

MATCH 的结果是这样的数组:

{1;1;1;4;4;6;6;6;9;9}

因为 MATCH 总是返回第一个匹配的位置,所以在数据中出现多次的值返回相同的位置。例如,因为“Jim”在列表中出现了 3 次,所以他在这个数组中作为数字 1 出现了 3 次。

该数组作为data_array参数输入 FREQUENCY 。bins_array 参数是根据公式的这一部分构造的:

ROW(B5:B14)-ROW(B5)+1)

它为数据中的每个值构建一个顺序数字列表:

{1;2;3;4;5;6;7;8;9;10}

此时,FREQUENCY 配置如下:

FREQUENCY({1;1;1;4;4;6;6;6;9;9},{1;2;3;4;5;6;7;8;9;10})

FREQUENCY 返回一个数字数组,指示数据数组中每个数字的计数,按 bin 组织。当一个数字已经被计数时,FREQUENCY 将返回零。这是该公式操作中的一个关键特征。FREQUENCY 的结果是这样的数组:

{3;0;0;2;0;3;0;0;2;0;0} // output from FREQUENCY

注意: FREQUENCY 总是返回一个比bins_array多一项的数组。

我们现在可以像这样重写公式:

=SUMPRODUCT(–({3;0;0;2;0;3;0;0;2;0;0}>0))

接下来,我们检查大于零 (>0) 的值,这会将数字转换为 TRUE 或 FALSE,然后使用双负 (–) 将 TRUE 和 FALSE 值转换为 1 和 0。现在我们有:

=SUMPRODUCT({1;0;0;1;0;1;0;0;1;0;0})

最后,SUMPRODUCT 只是简单地将数字相加并返回总数,在本例中为 4。

处理空白单元格

范围内的空单元格将导致公式返回 #N/A 错误。要处理空单元格,您可以使用更复杂的数组公式,该公式使用 IF 函数过滤掉空白值:

{=SUM(IF(FREQUENCY(IF(data<>””, MATCH(data,data,0)),ROW(data)-ROW(data.firstcell)+1),1))}

注意:添加 IF 会使其成为需要control -shift-enter的数组公式。

220 多个excel快捷键速查表,适用Windows和Mac。工作效率提高10倍。免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注