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

本次的练习是:如下图所示的工作表,使用公式来判断单元格区域A1:A3与C1:C3中是否有重复值。

从工作表中可以明显看出,这两个区域中都含有“Excel”,因此有重复值。

如何使用公式来判断呢?

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


公式思路

将单元格区域A1:A3中的每个值与C1:C3中的每个值比较,若都不相同,则没有重复值,否则就存在重复值。

公式解析

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

=OR(TRANSPOSE(A1:A3)=C1:C3)

其值为TRUE,表明两个区域中存在重复值。如下图所示。

公式中,使用TRANSPOSE函数将A1:A3转置成水平方向的数组,即{“完美Excel”,”excelperfect”,”Excel”},然后,C1:C3中的值{“Office”;”Excel”;”Word”}逐一与转置的数组相比较,即C1中的值“Office”与{“完美Excel”,”excelperfect”,”Excel”}比较,C2中的值“Excel”与{“完美Excel”,”excelperfect”,”Excel”}比较,C3中的值与{“完美Excel”,”excelperfect”,”Excel”}比较,总共进行9次比较。若值相等,则返回TRUE,否则为FALSE。最后得到一个3行3列的数组:

{FALSE,FALSE,FALSE;FALSE,FALSE,TRUE;FALSE,FALSE,FALSE}

该数组作为OR函数的参数,获取比较后的结果。只要数组中有一个值为TRUE,OR函数的返回值就为TRUE。本例中,数组中有一个值为TRUE,因此返回TRUE,则表明存在重复值。

应用扩展

扩展1:要判断有无重复值的单元格区域方向不同

上文中判断重复值的单元格区域都在列中,然而如果要判断有无重复值的一个区域在列中,一个区域在行中,如下图所示的工作表,判断单元格区域A1:A3与C1:G1是否有重复值,那么如何编写公式呢?

这种情形下,公式更简单!在单元格C3中输入数组公式:

=OR(A1:A3=C1:G1)

由于这两个区域没有重复值,因此其结果为FALSE,如下图所示。

单元格区域A1:A3中的每个值逐一与单元格区域C1:G1中的每个值相比较,共进行15次比较,得到数组:

{FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE}

作为OR函数的参数。由于数组中全为FALSE,因此结果为FALSE,表明两个区域中没有重复值。

扩展2:要比较的单元格区域具有更多的行列数

上述比较判断两个单元格区域是否具有重复值的方法,要求两个区域的方向不同,一个是逐行,一个是逐列。然而,对于Excel 2003来说,工作表列数为256列,对于Excel 2007及以上版本来说,工作表列数为16384列,若数据量超过这些列数,就不能使用上面的方法了。

此时,可以使用MATCH函数与COUNT函数组合来判断两个单元格区域是否有重复值。

例如,对于前面的例子,可以使用数组公式:

=COUNT(MATCH(A1:A3,C1:G1,0))

如果结果为0,那么表明两个单元格区域没有重复值。如果结果为数字,那么该数字就表示这两个区域具有的重复值个数。

注:可以给要比较的两个区域命名,例如Data1和Data2,然后使用名称代称公式里的区域,例如=COUNT(MATCH(Data1,Data2,0)),这样更灵活。

MATCH函数在区域Data2中查找区域Data1中的值,若没有找到则产生错误值#N/A,若找到则获取该值所在的列号。这样,生成由#N/A或数字组成的数组。将该数组作为COUNT函数的参数,统计数组中的数字。若没有数字,表明没有重复值,则为0。若有数字,则返回数字的个数,也即重复值的个数。

小结

  • 要比较两个区域中的数据,这两个区域的方向应不同。若两个区域的方向相同,应使用TRANSPOSE函数将其中一个区域转置。TRANSPOSE函数的用法详情参见《Excel函数学习23:TRANSPOSE函数》。

  • 上述方法比较的次数,也就是说产生的数组中元素个数取决于两个区域所占的行列数,例如第1个例子比较的次数为3×3=9次,第2个例子比较的次数为3×5=15次。

  • Excel工作表中列的数据代表数组中的每行,即每个数据后都是分号;而工作表中的行数据代表数组中的每列,即每个数据后都是逗号,最后才是分号。

  • COUNT函数不会统计#N/A值,只返回非#N/A值的数量。

(0)

相关推荐

  • Excel公式技巧71:查找一列中有多少个值出现在另一列中

    excelperfect 有时候,我们想要知道某列中有多少个值同时又出现在另一列中,例如下图1所示,列B中有一系列值,列D中有一系列值,哪些值既出现有列B中又出现在列D中.因为数据较少,不难看出,在列 ...

  • 精通Excel数组公式021:提取唯一值列表并排序

    excelperfect 本文将综合使用前面系列中学习到的技术,包括布尔逻辑.动态单元格区域.提取满足条件的数据.统计唯一值等,创建出一个解决问题的大型公式.当然,如果你不需要自动动态更新数据,完全可 ...

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

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

  • 如何判断两个单元格是否相同

    大家在使用VLOOKUP函数时,经常会遇到明明看上去要查找的值是存在的,但就是无法返回正确结果,这是什么原因呢? 原因有很多,例如引用的区域没有锁定,下拉公式时,引用的区域发生移动,导致要查找的数值不 ...

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

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

  • INDEX函数,不仅获取数据,还能得到单元格区域

    通常情况下,使用INDEX函数来获取数据,其通用语法形式为: =INDEX(array,row_num,column_num) 即,获取参数row_num指定的行和参数column_num指定的列交叉 ...

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

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

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

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

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

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

  • excel怎样合并两个单元格中的文字

    原创 | 浏览:18500 | 更新:2019-11-28 19:48 | 标签:EXCEL 1 2 3 4 5 分步阅读 excel怎样合并两个单元格中的文字?选择需要合并的两个单元格文字后面的单元 ...

  • 怎么提取两个单元格里不同的内容?

    小勤:怎么提取两个单元格里不同的内容啊? 大海:这里有几种情况哦:1.只要"文本1"里有"文本2"里没有的2.只要"文本2"里有" ...