值得收藏的公式,使用公式实现对Excel数据删除重复项统计

至近至远东西,至深至浅清溪。至高至明日月,至亲至疏夫妻。

                                                                                                              -《八至》唐.李冶

首先有个问题问下小伙伴们,在Excel中当我们需要对一列数据进行统计不重复的内容时,你会怎么操作呢?

如果没猜错的话,应该是以下这两种方法

方法一:删除重复项

点击菜单栏中的【数据】-【删除重复项】,删除重复值

方法二:使用数据透视表

选中需筛选的数据,点击【插入】-【数据透视表】,然后把对应数据列表头拉入行中,实现筛选

今天给大家介绍的是使用公式实现数据删除重复值,重点是可以随原始数据,实时更新

先给大家演示下效果:

可以看出,筛选出的数据和其他方式得出的数据一致,且当我们对原始的人名进行修改的时候,可以看到不重复的人员这一列人名也跟着变动了

先给大家看下C2单元格的公式:

=IFERROR(INDEX($A$2:$A$15,MATCH(0,COUNTIF($C$1:C1,$A$2:$A$15),0),1),"")

公式详解:

首先可以看出,这个公式主要用到了下面4个函数

IFERROR,INDEX,MATCH,COUNTIF

为了方便理解,下面逐个给大家分析下。

COUNTIF函数

我们知道COUNTIF函数是用来进行计数统计的,语法结构

COUNTIF(range,criteria)

Range: 要计算其中非空单元格数目的区域

Criteria: 以数字、表达式或文本形式定义的条件

我们经常用到的是查找一个内容,在目标区域出现的次数,就像下面这样统计赵云在A列出现的次数

看我们的公式:

COUNTIF($C$1:C1,$A$2:$A$15)

可以看出第一个参数C1是绝对引用的,第二个C1是相对引用,即随着我们下拉单元格,Range区域是随之变更,C1:C2,C1:C3...

又可以看出Range和Criteria都是一个数据区域,含义是什么呢?

代表通过Countif函数依次统计A2:A15,每个单元格内容在C1:C1出现的次数

当我们的Range是一个区域或者一个值的时候,Criteria是区域的时候,查找的结果返回的是一组数组

就像上面Countif的Range是C1(赵云),Criteria是A2:A15,即当Criteria是A2,A5,A9时,返回结果为1;当Criteria不是这几个单元格内容时,返回的结果都是0,

其实我们的公式就是代表以下这些公式的结果合集:

Countif(C1,A2);Countif(C1,A3);Countif(C1,A4)...

D2输入公式:

=countif(C1,A2:A15)

最终返回的结果是:

再演示下,如果C1和C2都是赵云,会出现什么结果

D3输入公式:

=countif(C1:C2,A2:A15)

计算步骤同样是公式的结果合集

Countif(C1:C2,A2);Countif(C1:C2,A3);Countif(C1:C2,A4)...

最终结果是:

所以我们使用的公式输出的结果就是一列数组,比如我们在C2输入:赵云,再在C3使用公式:

=COUNTIF($C$1:C3,$A$2:$A$15)

返回的数组就是如下样式的:

MATCH函数

接着我们看Match函数,Match函数语法为

MATCH(lookup_value, lookup_array, [match_type])

lookup_value:必需参数,需要在 lookup_array 中查找的值,比如可以是数字也可以是文本,比如"0","赵云",或者是单元格

lookup_array:必需参数,要搜索的单元格区域。

match_type:可选参数,数字 -1、0 或 1。1代表会查找小于或等于lookup_value 的最大值,0代表等于 lookup_value 的第一个值,-1代表大于或等于 lookup_value 的最小值

我们看公式:

MATCH(0,COUNTIF($C$1:C1,$A$2:$A$15),0)

能看出Lookup_value为0,lookup_array为

COUNTIF($C$1:C1,$A$2:$A$15),match_type为0,代表查找到的第一个值

为什么lookup_vlaue为0呢, 我们再看上面介绍的Countif函数,当我们查找值的内容(A列的值)不在Range(C列提取值)范围时,得到的结果是不是0,第一个0的出现是不是就代表的新出现一个不在查找区域的值,即我们需要筛选的数据内的不重复的值

此时我们用Match函数查找第一个0在数组的位置,即得到了新的不重复的值在原始数据第几行了

INDEX函数

Index函数的语法结构是这样的:

INDEX(array, row_num, [column_num]),通过行列的内容返回数组里的具体内容

Array:必需。单元格区域或数组常量。

如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选参数,我们现在只有一列,所以column_num是可选参数

Row_num:必需。选择数组中的某行,函数从该行返回数值。如果省略 row_num,则必须有 column_num。

Column_num:可选。选择数组中的某列,函数从该列返回数值。如果省略 column_num,则必须有 row_num。

看我们的公式:

INDEX($A$2:$A$15,MATCH(0,COUNTIF($C$1:C1,$A$2:$A$15),0),1)

其中Array为A2:A15,Row_num为Match函数输出的结果,Column_num为1,即查第Match结果行,第1列,在数据区域A2:A15的值

最终即得到我们需要的结果

IFERROR

IFERROR函数是用来判断计算公式是否正确的一个函数,如果公式正确返回公式的值,如果不正确返回设定的值,我们设定的结果是空值

IFERROR(value, value_if_error)

其中Value值是必需的,检查是否存在错误的值

 value_if_error也是必须的,当Vlaue公式的计算结果为错误时要返回的值。

错误类型有:#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!。

总结

整个公式,比较难理解的是COUNTIF函数的那块,大家可以多多练习下,多试验几次就能帮助我们更好的理解了,另外注意因为这是数组公式,输入完成后,我们需要按CTR+Shift+Enter键结束公式。

如果觉得文章对你有帮助的话,希望大家帮忙点赞加分享哦~,谢谢

本文由彩虹Excel原创,欢迎关注,带你一起长知识!

你可能感兴趣的:(值得收藏的公式,使用公式实现对Excel数据删除重复项统计)