筛选出不重复的记录(正序和逆序)

那么我们来看下数据源。如下图所示,A列是源数据,有北上广深4个城市,它们有重复的,现在要筛选出不重复的记录,结果如CD两列所示。这是筛选出第1次出现的城市,也是正向查询。

下图是筛选最后1次出现的记录,也就是逆向查询第1次的记录。我在数据源中都用条件格式标出了,方便大家查看。

我这里用的是2个工作表,第1个工作表放的是正向查询,第2个表是逆向查询。

先来看正向查询,在C2单元格输入公式=INDEX(A:A,SMALL(IF(FREQUENCY(ROW(A:A),MATCH(A$2:A$15,A$2:A$15,)),ROW($2:$16),4^8),ROW(A1)))&"",按ctrl+shift+enter三键结束,向下填充。

这里我用了frequency,因为这个函数实在是太强大了,能学会几个套路就感觉很厉害了。由于这里的城市是文本,所以直接用frequency还不行,先要将文本转为数字,那就用match函数。也就是MATCH(A$2:A$15,A$2:A$15,)这部分,查找每个城市的位置,由于用的是精确查找,match只返回第1次出现的位置,所以相同的城市返回相同的数字。

FREQUENCY(ROW(A:A),MATCH(A$2:A$15,A$2:A$15,))这部分其实和MATCH(A$2:A$15,A$2:A$15,)=ROW($2:$15)-1是差不多的意思,都是第1次出现的记录成立。也可以写为FREQUENCY(ROW(2:15)-1,MATCH(A2:A15,A2:A15,))或FREQUENCY(MATCH(A2:A15,A2:A15,),ROW(2:15)-1),用ROW(A:A)是为了简写一下,不要把ROW(A:A)放在FREQUENCY的第2参数。

剩下的就是万金油的用法了,index+small+if等,这里要注意的问题是frequency返回的结果要比第2参数的元素多1个,所以if返回对应的行号要多加1个,改为ROW($2:$16),否则会多一个错误值。这个就说到这里,其实和match=row的套路差不多。

下面看第2个公式,在D2单元格输入公式=LOOKUP(,0/FREQUENCY(1,--ISNA((MATCH(A$1:A$15,D$1:D1,)))),A:A)&"",向下填充。这个公式的好处是不用按三键结束。用的是lookup+frequency的套路,其实还要用到match或countif动态区域的用法。也就是我之前文章《查找不重复记录的几个套路(删除重复项)》的第3种套路。这个公式大家感兴趣自己研究一下吧。正序筛选不重复就说到这里。

接下来说下,筛选最后1次的记录,也就是逆向查询。在D2单元格输入公式=INDEX(A:A,SMALL(IF(MATCH(T(OFFSET(A$1,16-ROW($2:$15),)),T(OFFSET(A$1,16-ROW($2:$15),)),)=ROW($2:$15)-1,17-ROW($2:$15),4^8),ROW(A1)))&"",按三键结束,向下填充。

这个公式就是用的match=row的套路,只不过借用offset的多维引用将正序转为逆序,也就是将A2:A15转为A15,A14,A13......A2,当然最后是一个内存数组。这样的话用match查找,就是从下往上查找第1次的记录。由于查找区域的顺序颠倒了,所以返回的行号也要颠倒一下,由ROW($2:$15)变为17-ROW($2:$15)。剩下的就是small+index了。

在C2单元格输入另外一个公式=INDEX(A:A,SMALL(IF(FREQUENCY(ROW(A:A),MATCH(A$2:A$15,A$2:A$15,)+1/ROW($2:$15)),ROW($2:$16),4^8),ROW(A1)))&"",按三键结束,向下填充。这个公式还是万金油的套路,但是逆向查找不重复的时候用的是frequency函数。

最关键的是FREQUENCY(ROW(A:A),MATCH(A$2:A$15,A$2:A$15,)+1/ROW($2:$15))这部分。MATCH(A$2:A$15,A$2:A$15,)是查找城市的位置,相同的城市返回相同的数字,后面加1/ROW($2:$15)是为了将相同的数字转为不同的数字,并且顺序是从大到小的,这样frequency就会找到最小的位置,也就是最后1次的位置。找到位置后,剩下的就是万金油的套路了,返回对应的行号,提取第1个最小的行号,返回对应的内容;提取第2个最小的行号,返回对应的内容......

链接:

https://pan.baidu.com/s/1LX9asoSNQOCQQDq_wBS7bg

提取码:gys3

(0)

相关推荐

  • 多条件统计不重复数据个数,万金油还能包打天下吗?

    送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 万金油经典函数组合是我们在实际工作中经常会用到的函数组合.在一对多及多对多查询.提取不重复清单的时候它发挥着巨大 ...

  • 使用Excel函数从列数据中提取不重复值的方法

    在工作中经常遇到需要将某个Excel表格中某列数据中不重复的值提取出来的情况,本文讲述了使用INDEX函数.SMALL函数.IF函数.ROW函数以及MATCH函数实现从Excel列数据中提取不重复值的 ...

  • 倒序筛选出不重复的记录,结果以倒序排列

    同学们,大家好.昨天说了两种去重的套路,一个是查找第一次出现的,一个是查找最后一次出现的.但是它们返回的结果都是从上到下排列的.今天还是讲解倒序查找不重复的记录,并且返回的结果还是倒序排列,也就是从下 ...

  • 如何从Excel中筛选出重复数据并合并?

    例如: A 1 2 B 3 4 C 5 6 A 7 8 B 9 10 D 11 12 要将第一栏重复的数据筛选出来,并将后面的数据合并,希望得到的结果是: A 8 10 B 12 14 该如何实现这一 ...

  • 筛选出每个人最高星级的记录(升级版)

    今天就来一个升级版的问题,筛选出每个人最高星级的记录.如下图所示,左表是数据源,右表是我们想要得到的效果.姓名我就用ABCD代替了,以姓名A为例说明一下题意:A对应的星级有6颗星,3颗星,4颗星,2颗 ...

  • 筛选出每个人最高分的记录(二)

    大家好,关于昨天的问题,今天来说另外一种方法,主要用的是frequency和match函数.最近我挺喜欢用frequency的,尽管我对它的掌握是有限的.一题多解可以拓展思维,如果你有心想学函数,不妨 ...

  • 筛选出每个人最高分的记录(一)

    大家好,好久没更新文章了.最近这段时间没有动力,感觉爱也爱不了,恨也恨不了,做题也做不出,一直处于挣扎的状态,但又挣扎不出来,深深地无力感,受挫感.算了,那就不挣扎了,接受有些事情和有些题目自己目前是 ...

  • Excel如何在大量数据中快速筛选出重复项?

    Excel如何在大量数据中快速筛选出重复项?在大量的数据当中筛选重复的数据,单靠人工是很费时费力的,而且可能还会有一些遗漏,今天小Q来给您分享一个在大量数据中快速筛选重复数据的小技巧. 1.选中我们要 ...

  • 基础篇--利用条件格式筛选出重复值

    送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 关于筛选重复值的话题我们谈论过多次了,可以利用数据透视表来完成,也可以利用公式来完成,高大尚一点的还可以利用PO ...

  • 第642期 | Excel技巧:如何快速筛选出不完整的行记录?

    --正文开始-- 什么是不完整行记录?下图中箭头所指的每一行就是不完整的记录行. (不完整行记录) 那我们怎能快速的筛选出来呢?这也是一位小伙伴在微信中提问.但直接筛选似乎无法直接筛选出来. 要实现这 ...

  • 这一招轻松搞定“合并单元格筛选时只筛选出第一条记录”的难题

    最近推送的五篇文章: 如何批量向下填充空白单元格?表哥表妹必会技巧! 如何正确地提问才能得到群友的帮助? 这款免费对账软件十秒钟对完一万条,秒杀收费软件, Excel冷门但非常好用的功能②:用视图管理 ...