统计单元格区域中不重复值的数量

统计单元格区域中有多少个不重复的值。如下图所示的工作表:

将单元格区域A1:A6命名为Data,要使用公式求出区域Data中有多少个不重复的值。

因为数据很少,我们数一数,是3个,就是数字1、2、3,但是如何用公式得出3呢?

先不要看下面的答案,自已试一试。


公式思路

先计算出每个值在单元格区域中出现的次数,然后统计其出现频率,最后将频率值相加,即为不重复值的个数。

公式解析

在单元格中输入下面的数组公式:

=SUM(1/COUNTIF(Data,Data))

输入完后,记得按Ctrl+Shift+Enter组合键。结果如下图所示:

公式中,COUNTIF(Data,Data)统计单元格区域Data中每个值在区域中出现的次数。等价于COUNTIF({1;2;3;3;2;2},{1;2;3;3;2;2}),首先使用COUNTIF({1;2;3;3;2;2},1)计算1在区域Data中出现的次数,得到结果1;接着使用用COUNTIF({1;2;3;3;2;2},2)计算2在区域Data中出现的次数,得到结果3,……,依此类推,最后得到的结果为{1;3;2;2;3;3},即由区域中各个值在区域中出现的次数组成的数组。

1/COUNTIF(Data,Data)计算所得数组{1;3;2;2;3;3}中每个值出现的频率,例如数组中第2个值3在出现的3次中占1/3,即0.333,因此,1/COUNTIF(Data,Data)计算所得的结果为数组{1;0.333;0.5;0.5;0.333;0.333}。该数组作为SUM函数的参数,相加后的结果即为不重复值的数量(因为每个值在一组数中出现的频率之和为1)。

下面,我们将求解过程分解,来进一步理解这个公式的原理。

在单元格C1中输入公式:

=COUNTIF(Data,A1)

并下拉至单元格C6,统计区域Data中每个值出现的次数,结果如下图所示。

在单元格区域D1:D6中输入数组公式:

=1/C1:C6

得到每个值在区域Data中出现的频率。

对单元格区域D1:D6求和,即得到区域Data中不重复值的个数:

注意,如果所求不重复值的区域中存在空单元格,会导致上述公式错误。

可以使用下面的公式解决:

=SUM(IF(COUNTIF(Data,Data)=0,"",1/COUNTIF(Data,Data)))

该公式巧妙地使用空格代替错误值#DIV/0!作为SUM函数的参数,将忽略掉空格而只求数值之和,最后得到所需结果。

小结

又一次惊叹公式的强大!其背后的原理,总是离不开基本的数学,好好体味这美妙的公式吧!

(0)

相关推荐

  • 统计利器-countif函数

    在实际应用中,经常需要统计某个字符或者字符串出现的次数.此时,就需要用到我们下面将要介绍的countif函数了. countif函数的语法结构如下: 语法结构:COUNTIF(range,criter ...

  • 判断两个单元格区域是否有重复值

    本次的练习是:如下图所示的工作表,使用公式来判断单元格区域A1:A3与C1:C3中是否有重复值. 从工作表中可以明显看出,这两个区域中都含有"Excel",因此有重复值. 如何使用 ...

  • Excel公式技巧85:统计单元格区域中的各种数据类型

    excelperfect 在Excel工作表中,输入到单元格中的数据总是下列4种类型之一: 文本 数值 布尔值(TRUE或FALSE) 错误值 如下图1所示,在列A中包含有所有这4种数据类型.现在,我 ...

  • 统计带空白单元格的区域中不重复值的个数

    下表记录的是一些人的信息,包含姓名,年龄和职务.其中有些人没有职务,就是空白单元格.求不重复职务的个数.通过动图的演示,可以看到不重复的职务有5个.如何通过函数计算出来呢? 假如没有空白单元格,很多小 ...

  • 获取单元格区域中的不重复值

    在一个单元格区域中含有重复值,使用公式来获取该区域中的不重复值. 例如,下图所示的工作表单元格区域A1:A13,将其命名为Data.在该区域中,含有很多重复值.现在要获取该区域中的不重复值. 先不看答 ...

  • 判断单元格区域中是否有重复值

    本次的练习是:使用公式确定指定的单元格区域中是否有重复值.如下图所示的工作表单元格区域A1:A9,我们将其命名为Data. 如果区域Data中有重复值,则返回False:如果区域Data中的值都不一样 ...

  • 获取单元格区域中最长内容的单元格数据

    本次的练习是:如下图1所示的工作表,在单元格区域A1:A7中有一组数据,如何使用公式获取该区域中最长内容的单元格数据?即单元格A2包含的文本"excelperfect". 图1 先 ...

  • 颠倒单元格区域中的数据

    使用公式将单元格区域中的数据颠倒过来.例如,下图所示工作表中的单元格区域Data(即A1:A7),使用公式将原来处于区域Data中第一个单元格A1中的数据放置到最后一个单元格,本例中为单元格C7,将区 ...

  • VBA案例精选 获取单元格区域中最后一个单元格地址

    代码运行结果: 代码截图: 代码文本: Public Sub 技巧() Dim myRange1 As Range, myRange2 As Range Set myRange1 = ActiveSh ...

  • Excel公式技巧90:剔除单元格区域中的空单元格

    excelperfect 有时候,在一列数据中有许多空单元格,导致数据不连续,我们需要剔除这些空单元格,让数据区域连起来. 如下图1所示,在单元格区域A1:A15中输入了一些数据,但其间有许多空白单元 ...