各位朋友,你们好,
今天和你们分享Excel中提取不重复值的几种方法,着重介绍【5种】基础操作方法,另外附送一个VBA去重代码,拿去就可以直接使用。
一、基础操作方法
1、数据工具直接去重(见下图)
2、高级筛选(见下图)
3、数据透视表(见下图)
4、条件格式(见下图)
注:
①条件格式去重的公式:=AND($A1<>"",COUNTIF($A$1:$A1,$A1)>1)
②设置的单元格格式为【;;;】,这个表示什么意思,可以查看我之前的文章;
③这种方式,并不是真正意义的去重,只是将重复的内容不显示出来;
点击链接,带你认识【;;;】
5、使用数据表的设计模式(见下图)
二、VBA方法(下面的代码可直接拿去用)
VBA去重,最常用的方法就是数组+字典,本例使用的代码如下:
Sub 数据去重() Dim Arr, Brr, a%, b%, Str1, Str2 Dim Dic As Object Set Dic = CreateObject("scripting.dictionary") Set Str1 = Application.InputBox("请选择要去重的数据区域", "选择数据", , , , , , 8) Arr = Range(Str1.Address) If Not IsArray(Arr) Then Exit Sub '如果不存在数据源选项,则arr非数组,那么退出程序 For a = 1 To UBound(Arr, 1) For b = 1 To UBound(Arr, 2) If Arr(a, b) <> "" Then Dic(Arr(a, b)) = "" '单元格非空,则装入字典 Next Next Brr = Dic.keys Set Str2 = Application.InputBox("请确定数据存放的单元格", "选择数据存放的单元格", , , , , , 8) Range(Str2.Address).Resize(Dic.Count, 1) = Application.Transpose(Brr) Set Dic = Nothing '释放字典内存End Sub
此代码做了灵活设置处理,支持自己选择区域,而并非只能对固定区域内容去重,有需要的朋友可以直接拿去使用。
三、函数公式去重
1、公式组合套路
用公式对数据去重,效率不是很高,且遇到数据量很大的时候,文件的运行会卡顿。但是既然说到去重,还是应该介绍下公式去重的套路(效果见下图)。
下面是去重公式的套路组合,拿去就可以直接套用:
=INDIRECT("A"&SMALL(IF(MATCH(数据区域,数据区域,)=ROW($1:$16),ROW($1:$16),4^6),ROW(A1)))&""
套路解析:
①【A】表示数据所在的列;
②【数据区域】:需要去重的数据,需要绝对引用;
③【ROW($1:$16)】:这里的16表示数据区域的高度,要根据实际情况调整;
④公式是数组公式,需要按组合键【Ctrl+Shift+Enter】结束。
当然,此处也可以用OFFSET函数或者INDEX函数,根据自己的情况合理选择即可。
2、高版本专有函数
如果你是Office 365的用户,还有一个更方便的函数【UNIQUE 函数】
3、自定义函数
如果是低版本的用户,不想用复杂的套路组合,又要实现不重复数据的实时更新,就只能使用自定义函数了。效果见下图:
自定义函数的代码如下:
Function QuChong(Rng As Range, Optional i As Integer, Optional Str As String = ",")'函数作用:去除重复项'函数名:QuChong。此函数有三个参数:Rng、i、Str'Rng:需要去重的数据区域'i(可忽略):去重选项,如果i=0,则去重后合并;如果i>0,则依次提取出内容'Str(可忽略):用于当i=0时,合并用的连接符。Dim Arr,Brr, a%, b%Dim DicSet Dic = CreateObject("scripting.dictionary")If Rng.Count = 0 Then QuChong = ""Arr = RngFor a = 1 To UBound(Arr, 1) For b = 1 To UBound(Arr, 2) If Arr(a, b) <> "" Then Dic(Arr(a, b)) = "" '单元格非空,则装入字典 End If NextNextBrr = Dic.keysIf i = 0 Then QuChong = VBA.Join(Dic.keys, Str)ElseIf i > 0 Then If i <= Dic.Count Then QuChong = Brr(i - 1) Else QuChong = "" End IfElse QuChong = "参数错误"End IfEnd Function
函数作用:去除重复项;
函数名:QuChong。此函数有三个参数:Rng、i、Str;
Rng:需要去重的数据区域;
i(可忽略,忽略是默认为0):去重选项,如果i=0,则去重后合并;如果i>0,则依次提取出不重复内容;
Str(可忽略,忽略时默认为逗号):用于当i=0时,合并用的连接符。
我是上班下班,因为爱好办公软件、喜欢分享。所以来到这里将我的学习心得和踩过的一些坑,和大家聊聊,希望大家学习我成功的经验,避开我踩过的坑。我和你们一起进步。
好了,今天就聊到这里,感谢各位朋友的关注和支持。
如果你喜欢我分享的内容,请点个赞支持下;
如果你觉得我分享的内容对你有帮助,可以关注我;
如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。