提取不重复值,你还不会吗?学起来吧!方法1:match=row

你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天分享的内容是提取不重复值的方法。提取不重复值其实就是删除重复项,如果数据中有多个重复的内容,只保留一个。

提取不重复值对于初学者还是有些难度的,不过不用担心,再难的问题也有相应的套路。提取不重复值基本上有3大类方法,分别是:match=row、多维引用和countif动态区域。

今天先来分享最简单,也是常用的1种方法:match=row。下面来看下案例。

下图左表展示的是某公司的销售数据,同一销售员可能负责多个地区及产品的销售。现在的要求是汇总各销售员的销售总额,结果如右表所示。
要想汇总各销售员的销售总额,先要提取出不重复的销售员名单,然后根据这个名单,统计出对应的销售总额。

当然提取不重复的名单是我们今天的主要内容,在F3单元格输入下面的公式,按ctrl+shift+enter三键,向下填充。

=INDEX(B:B,SMALL(IF(MATCH(B$3:B$14,B:B,)=ROW($3:$14),ROW($3:$14),4^8),ROW(A1)))&""

MATCH(B$3:B$14,B:B,)这部分用match查找B3:B14在B:B这个区域中第一次出现的位置。其中第1参数是一个数组,所以返回的结果也是一个数组,为{3;4;5;3;7;4;9;9;4;9;7;5}。
ROW($3:$14)返回3到14行的行号,结果为{3;4;5;6;7;8;9;10;11;12;13;14}。其实也是B3:B14在B:B这个区域中的位置,只不过用序号的方法来表示。

MATCH(B$3:B$14,B:B,)=ROW($3:$14)这部分是让两者进行相等的比较,返回的结果如下图H列所示。其中F列是match函数返回的结果,G列是row函数返回的结果。

我们可以发现:如果二者是相等的,也就是结果为true,那么对应的销售员是第一次出现的,也是我们要提取的不重复值。
IF(MATCH(B$3:B$14,B:B,)=ROW($3:$14),ROW($3:$14),4^8)这部分用if函数判断,如果match等于row,返回对应的行号,否则返回一个较大的数字4^8,也就是65536。
最后的结果为{3;4;5;65536;7;65536;9;65536;65536;65536;65536;65536},如下图I列所示。

SMALL(IF(MATCH(B$3:B$14,B:B,)=ROW($3:$14),ROW($3:$14),4^8),ROW(A1))这部分用small从if返回的结果中提取第1个最小值3。公式下拉时,row(a1)变为row(a2),也就是提取第2个最小值4,···,以此类推,结果如下图J列所示。

INDEX(B:B,SMALL(IF(MATCH(B$3:B$14,B:B,)=ROW($3:$14),ROW($3:$14),4^8),ROW(A1)))这部分用index返回B列相应行的销售员,如下图K列所示。

当不重复值全部提取后,公式再下拉变为0。为了把0去掉,公式后面连接空文本,也就是&""。这样就提取出不重复值。
最后汇总各销售员的销售总额,在G3单元格输入下面的公式,向下填充,完成。

=IF(F3="","",SUMIF(B$3:B$14,F3,D$3:D$14))

链接:

https://pan.baidu.com/s/1ul6DGlHyfafS-VMblx5ZJw

提取码:zzc5
(0)

相关推荐