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

在一个单元格区域中含有重复值,使用公式来获取该区域中的不重复值。

例如,下图所示的工作表单元格区域A1:A13,将其命名为Data。在该区域中,含有很多重复值。现在要获取该区域中的不重复值。

先不看答案,动手试一试。


公式思路

首先求出单元格区域Data中每个值在区域中第1次出现的行号,然后根据行号取出这些值。

公式解析

在单元格区域C1:C13中输入下面的数组公式:

=INDEX(Data,SMALL(IF(MATCH(Data,Data,0)=ROW(INDIRECT("1:"&ROWS(Data))),MATCH(Data,Data,0),""),ROW(INDIRECT("1:"&ROWS(Data)))))

按Ctrl+Shift+Enter组合键,即可得到区域Data中不重复值,如下图所示:

公式中,MATCH(Data,Data,0)得到数组{1;1;1;4;4;4;7;7;7;10;10;7;1},即区域Data中每个值在该区域中出现的行号。ROW(INDIRECT("1:"&ROWS(Data)))得到数组{1;2;3;4;5;6;7;8;9;10;11;12;13},INDIRECT函数将“1:13”转换成行区域$1:$13。

MATCH(Data,Data,0)=ROW(INDIRECT("1:"&ROWS(Data)))即上述两个数组相比较,得到数组{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE},IF函数根据该数组获取MATCH(Data,Data,0)所得数组中的值,即{1;””;””;4;””;””;7;””;””;10;””;””;””},SMALL函数分别取这个数组的第1、2、3、…、13最小值,即{1;4;7;10;””;””;””;””;””;””;””;””;””},将此数组作为INDEX 函数的参数,分别取区域Data中对应行的值。

从上图所示的工作表中可以看出,对于数组公式中多余的单元格会显示#NUM!。使用下面的数组公式避免显示#NUM!。

=IFERROR(INDEX(Data,SMALL(IF(MATCH(Data,Data,0)=ROW(INDIRECT("1:"& ROWS(Data))),MATCH(Data,Data,0),""),ROW(INDIRECT("1:"& ROWS(Data))))),"")

IFERROR函数在错误值时输入空。

小结

  • ROW函数中不能再包括其它求值的函数,此时使用INDIRECT函数来间接引用。

  • IFERROR函数是Excel 2007及其后的版本中的函数,当第一个参数为错误值时,将另一个参数作为返回值。若要在Excel 2013中得到同样的结果,则要将IF函数和ISERR函数结合使用。

  • 公式中蕴含着一些通用思想,可以在其他类似情形中借鉴。

(0)

相关推荐

  • 一万零一,是个神奇的数字。多行多列转单列就靠它!

    下图A2:D6是数据源,记录的是一些姓名.现在要将这个区域的姓名逐列提取,并放置在一列中,结果如F列所示.也就是先提取A列的姓名,然后是B列的.C列的.D列的. 这个问题用函数来完成还是挺困难的.除了 ...

  • 万金油公式在二维数组中的应用

    今天和小伙伴们学习下万金油公式在二维数组中的应用.对于万金油公式,相信常用excel函数的同学都很了解,我这里把它叫做筛选公式.如果不了解,也没有关系,可以慢慢积累. -01- 表格转换 1.将左表转 ...

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

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

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

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

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

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

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

    统计单元格区域中有多少个不重复的值.如下图所示的工作表: 将单元格区域A1:A6命名为Data,要使用公式求出区域Data中有多少个不重复的值. 因为数据很少,我们数一数,是3个,就是数字1.2.3, ...

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

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

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

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

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

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

  • 剔除单元格区域中的空单元格

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

  • Excel只在特定单元格区域中显示背景,你不知道的技巧!

    Excel只在特定单元格区域中显示背景,你不知道的技巧!