查找不重复记录的几个套路(删除重复项)

今天和小伙伴们分享几个查找不重复记录的套路,这个不重复的记录相当于用删除重复项这个功能,比如表中有2个相同的名字,只取第一次出现的记录。也就是如果一条记录重复出现多次,只取第一次出现的记录。

-01-

offset多维引用

1.将A列中的部门去除重复项

如下图所示,去除重复项的结果如E列所示,最简单的方法就是用数据中-删除重复值这个命令。现在我们说的是用函数的方法来实现,在E2单元格中输入公式=IFERROR(INDEX(A:A,SMALL(IF(COUNTIF(OFFSET(A$2,,,ROW($2:$11)-1),A$2:A$11)=1,ROW($2:$11)),ROW(A1))),""),按三键结束,下拉填充。

上面那个公式主要用到offset的多维引用,现在不懂也没有关系。可以用辅助列的方法来完成。先简单说一下思路,主要是找到每个部门第一次出现的行号,然后提取出每个行号,最后返回A列的对应的单元格。

在B列添加一个辅助列,在B2单元格中输入公式=IF(COUNTIF(A$2:A2,A2)=1,ROW()),结果如上图B列所示。COUNTIF(A$2:A2,A2)是动态区域,下拉时,区域会扩展,返回的结果相当于每个部门出现的次数。外面再用if函数判断,如果countif返回的结果等于1,那么返回对应的行号,否则返回false。

在C2单元格中输入公式=IFERROR(INDEX(A:A,SMALL(B$2:B$11,ROW(A1))),"")。SMALL(B$2:B$11,ROW(A1))是将辅助列的行号从小到大的提取出来。small是返回数组中第k个最小值。第一个最小值是2,下拉第二个最小值是3......然后用index返回A列中对应的位置。iferror是用来处理错误,将small产生的错误值转为空文本""。

-02-

match( )=row( )

2.将A列中的部门去除重复项

第2种套路主要用的是match函数和row函数。在E15单元格输入公式=IFERROR(INDEX(A:A,SMALL(IF(MATCH(A$15:A$24,A$15:A$24,)=ROW($15:$24)-14,ROW($15:$24)),ROW(A1))),""),按三键结束,下拉填充。

思路还是查找各部门第一次出现的行号。主要的方法就是用match查找到位置,然后和序列号比较,如果相等就是第一次出现的位置,那么返回它的行号。下面还是用辅助列说明。

在B列添加辅助列,B15单元格输入公式=IF(MATCH(A15,A$15:A$24,)=ROW(A1),ROW()),下拉。MATCH(A15,A$15:A$24,)是查找A15的值在A$15:A$24这个区域的位置。ROW(A1)下拉时构建一个以1开始的序列号。如果match返回的位置和对应的序列号相等,那么就是部门第一次出现的位置,要返回它的行号。

在辅助列中算出了各部门第一次出现的行号,剩下的就一样了。在C15单元格中输入公式=IFERROR(INDEX(A:A,SMALL(B$15:B$24,ROW(A1))),""),下拉完成。

-03-

match+countif动态区域

3.将A列中的部门去除重复项

第3种套路主要是用match和countif的动态区域。在C28单元格输入公式=IFNA(INDEX(A:A,MATCH(,COUNTIF(C$27:C27,A$28:A$37),)+27),""),按三键结束,下拉完成。这个公式还是有点难理解的,好处就是公式比上面2个短。它是把上一次的结果放入下一次的计算区域中。

countif函数的第一参数是动态区域,第2参数是各部门的数据。查找各部门在第一参数中的个数,没有的返回0,有的返回对应的个数,构成一个数组。然后用match查找第一个0的位置,再加上表头的行号就是在A列中的行号。最后用index返回相应的值。

这里的关键是countif的第一参数在第一次的时候肯定不会包含A28:A37,就相当于countif的第一参数是一个空的数组,用A列的每个单元格和空的数组进行比较,如果A28没有在空数组中出现,就把A28放到空数组中,然后A29和那个数组比较,如果A29也没有出现在那个数组中,那么把A29也放到那个数组中;如果A29已经出现在那个数组中,那么不管了,直接看A30有没有出现在那个数组中......以此类推。

链接:

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

提取码:w6or

(0)

相关推荐

  • VLOOKUP函数之另类用法,让领导对你刮目相看

    相信经常使用EXCEL的小伙伴们,对VLOOKUP函数并不陌生.这个函数是我们最常用的几个函数之一.相信,小伙伴们,也经常会用到这个函数.这里,咱们玩点其他的. 首先,给大家准备了源数据.如图: &l ...

  • Excel公式练习82:提取最近出现的相同数据旁边的单元格内容

    excelperfect 本次的练习是:如下图1所示,有两列数据,要求在列B中输入数据后,自动匹配其上方最近一次出现的该数据并提取对应的列A中的数据放置到列C对应的单元格中,例如,单元格B6中输入1后 ...

  • 【总结篇】序列问题其实很简单

    动手操作是熟练掌握EXCEL的最快捷途径! 序列在EXCEL中有着非常重要的作用.那么,构建序列是否有章可循呢? 01 构建正循环序列 例如,我们需要构建一个开始值为1,循环周期为4的循环序列. 在单 ...

  • 如何删除重复记录的同时保留最新记录

    如图1,要删除A列重复的商品代码,最终保留B列最新维护日期的那条记录. 图1 先对A,B列数据进行排序,把相同的商品代码最新维护日期放在最上面一行,如图2. 图2 再选中排序后的结果,点击数据→删除重 ...

  • SQL重复记录查询的几种方法

    SQL重复记录查询的几种方法,需要的朋友可以参考一下 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 代码如下: select * from people where p ...

  • 大厂高频面试题:如何实现 MySQL 删除重复记录并且只保留一条?

    最近在做题库系统,由于在题库中添加了重复的试题,所以需要查询出重复的试题,并且删除掉重复的试题只保留其中1条,以保证考试的时候抽不到重复的题. 关于MySQL的知识点总结了一个思维导图,希望对大家所有 ...

  • 564.Office技巧: 如何批量合并数据表中重复记录的数据统计?

    Excel技巧: 如何批量合并数据表中重复记录的数据统计? 如何批量合并数据表中重复记录的数据统计?有没有觉得这个问题很拗口,但这个问题经常会困扰职场的需要做重复记录合并统计的人士.如果没看懂题目,可 ...

  • Excel如何批量合并数据表中重复记录的数据统计

    灵活运用数据透视表,能解决很多数据处理的问题.比如说,重复记录的数据统计汇总. 操作 本例是将货物代码和货柜重复的数据进行现有量的合并统计. 步骤1:将光标置于数据表中的任意单元格,然后依次单击&qu ...

  • Excel怎么快速查找和删除重复数据

    我们用excel表格记录了大量的数据,当要做数据整理时候发现很多重复数据,那么怎么筛选删除呢? ---------------------------------------------------- ...

  • MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: 1 select title,count(*) as co ...

  • 如何统计不重复记录的个数?

    前言 数据录入时有时会重复录入,导致计算错误,那么如何找出重复项或统计非重复项个数就是必须要考虑的问题. 1快速删除重复项 如下图所示:一共有5条记录,记录1和记录5是完全重复的.那么如何快速找出重复 ...

  • Excel单条件查找返回多行数据的函数套路 万金油函数详解

    index(结果列,small(if(条件列=条件,row(条件区),大数字),row(a1)))此处如果想要结果为0显示为空;数值方法可以设置单元格格式,自定义输入[=0]""; ...