提取不重复值并统计数量的三个方法,一秒完成!
作者:E图表述来源:部落窝教育发布时间:2021-03-23 11:06:55点击:5868
编按:
如何提取不重复值并统计数量?这是EXCELER在工作中普遍会遇到的问题。今天,小E给大家带来的就是从三个角度,用三种完全不同的方式去处理这类问题的方法。不管你是EXCEL小白还是有一定经验的数据民工,又或者是想成为大神的EXCEL老鸟,都能在这篇文中,找到适合你的方法。一秒搞定提取不重复值,其实很简单……
【前言】
今天说的EXCEL问题,其实在大家的日常工作中经常会遇到,例如下面的这个图:
这个问题中,A列中只列出了30行的数据,而实际工作中的数据情况则会有更多的变化。鉴于一切问题的解决方法都是“万变不离其宗”的,所以笔者将就上图的问题,给大家分别讲述三个不同的解决方法。看完以后,相信大家无论遇到再怎么复杂的同类问题,都会有思路去解决,而不至于“手足无措”。
【正文】
最简单的处理方式
对于提取不重复值的处理方法,笔者认为最简单的方式就是使用工具栏中的“删除重复值”功能键来实现。
首先选中A列,选择性粘贴为数值,粘贴到D列;然后选中D列,再点击工具栏——“数据”选项卡——“删除重复值”。这样我们就完成了提取唯一值的过程,如下图所示:
然后在E2单元格中输入函数:
=COUNTIF(A:A,D2)
下拉填充E2:E7单元格区域,及此完成操作。
点评:笔者认为,这个方式可能对于小伙伴们来说,是最容易上手而且是最直接的操作方式,简单两步就可以完成。虽然每次统计的时候都需要手动操作一遍,好在是不复杂。
最慌的处理方式
Hohoho,之所以叫它是“最慌”的处理方法,是因为它需要使用被EXCELER们称为“万金油”的公式。这个名字应该是如雷贯耳了吧,很多小伙伴估计都听过,也都知道万金油是处理去重并提取唯一值的利器。虽然在《EXCEL教程》的许多教程中都有相关案例,但依然有很多小伙伴不能很好的理解并使用它。
即使大家一看到“去重并提取唯一值”,就想到“万金油”公式,但一动手用“万金油”公式,还是只会“慌的一批”~~~
在D2单元格输入函数:
{=IFERROR(INDEX($A$2:$A$31,SMALL(IF(MATCH($A$2:$A$31,$A$2:$A$31,0)=ROW($A$1:$A$30),ROW($A$1:$A$30),99^9),ROW(D1))),"")}
公式解析:
① MATCH($A$2:$A$31,$A$2:$A$31,0)=ROW($A$1:$A$30)
利用MATCH函数,判定A2:A31区域中的值,第一次出现的序号,是否和行号一致。
② IF(……,ROW($A$1:$A$30),99^9)
利用IF函数,返回索引值。如果MATCH()中的行号一致,则返回行号;如果不一致,则返回99^9(一个绝对大的值)
③ SMALL(……,ROW(D1))
利用SMALL函数,提取前两步中返回的值,因为我们的函数需要下拉,那么ROW(D1)的值,就会随着下拉而随动,此函数的意义就变成,第1最小的值、第2最小的值、第3最小的值……。
④ INDEX($A$2:$A$31,……)
在A2:A31中,提取第x个位置上的值,这个x值就是刚才SMALL()中返回的值。
⑤ =IFERROR(……,"")
最后使用IFERROR函数容错,使得错误值不出现。
点评:笔者认为,如果大家的函数水平还算过硬,那还是推荐大家使用这个方法。因为公式可以随着数据源的变化而变化,得出当前的结果,不需每次都要操作一遍。这个方法对于形成函数类型的模板是相当实用。
最正确的处理方式
最后一种方法,是笔者在工作中处理此类问题时,经常使用的方法。
可能对于有的小伙伴来说,它是一个“谈虎色变”的方法。但是不容否定的说,这个方法——VBA字典去重,才是真正打开“EXCEL去重”正确使用方式的方法。
首先按ALT+F11,打开VBE界面。在左侧的“工程窗口”中插入模块,然后在代码窗口中输入代码:
Sub 去重()
Dim arr, d
arr = Sheets("最对").Range("A2:A31")
Set d = CreateObject("scripting.dictionary")
For i = 1 To UBound(arr)
d(arr(i, 1)) = d(arr(i, 1)) + 1
Next i
Sheets("最对").[D2].Resize(d.Count, 1) = Application.Transpose(d.keys)
Sheets("最对").[E2].Resize(d.Count, 1) = Application.Transpose(d.items)
End Sub
小伙伴们运行代码后,就可以得到去重后的字段和相应的次数。
点评:笔者认为,EXCEL最大的魅力在于它的办公自动化,VBA又是在此基础上更进一步让大家真正实现办公自动化的操作。一段简单的代码,可以让你解放双手的同时,还可以提高表格统计的效率和计算的正确性。
【编后语】
此篇教程到这里就结束了,希望可以给大家带来一些思考。数组函数也好,VBA也好,都是需要大家对数据有深度地理解和逻辑思考能力。我们到底算不算一个“数据人”,在处理同一个问题时,看你选择哪种数据处理方法就已然可以判断了。
本文配套的练习课件请加入QQ群:902294808下载。
做Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!
扫下方二维码关注公众号,可随时随地学习Excel:
相关推荐:
版权申明:
本文作者E图表述;同时部落窝教育享有专有使用权。若需转载请联系部落窝教育。