①条件格式去重的公式:=AND($A1<>"",COUNTIF($A$1:$A1,$A1)>1)
②设置的单元格格式为【;;;】,这个表示什么意思,可以查看我之前的文章;
③这种方式,并不是真正意义的去重,只是将重复的内容不显示出来;
点击链接,带你认识【;;;】
5、使用数据表的设计模式
(见下图)
数据表的设计模式数据去重
二、VBA方法
(下面的代码可直接拿去用)
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 函数
】
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时,合并用的连接符。
我是上班下班,因为爱好办公软件、喜欢分享。所以来到这里将我的学习心得和踩过的一些坑,和大家聊聊,希望大家学习我成功的经验,避开我踩过的坑。我和你们一起进步。
好了,今天就聊到这里,感谢各位朋友的关注和支持。
如果你喜欢我分享的内容,请点个赞支持下;
如果你觉得我分享的内容对你有帮助,可以关注我;
如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。
② 通用
方法
:字典
去重
复
Sub RecSortTest()
arr = Array(5, 4, 2, 1, 5, 8, 7, 2, 7, 9, 3, 6, "22", "23", "221", 22, 23, 221, "a", "z", "c") '测试数组
' arr = WorksheetFunct
贴吧提问,
Excel
内置
函数
使用比较麻烦,
VBA
字典实现比较直观
自定义函数
UNIQUE_IF筛选单元格区域
中
的
值
,可以选择返回其
中
的唯一
值
或
重复
值
,并用分隔符分隔。
vb
中
array
函数
用法在vb
中
array()
函数
用于创建数组,表示返回一个包含数组的 Variant。可以创建数
值
数组(带有数字 ID 键的数组)、关联数组(带有指定的键的数组,每个键关联一个
值
)、多维数组(包含一个或多个数组的数组)。array(50 25 369 42 23 36 88 127 )表示创建了一个多维数组,数组名为array,在这个数组里包含了50、25、369、42、23、...
导读:
VBA
作为
Excel
中
最厉害的一把利器,但是因为其学习门槛阻挡了很多
Excel
使用者,今天芒
种
君给大家分享1个
VBA
自定义插件,零
基础
直接套用模板就可以使用了,代码也非常简短。文/芒
种
学院@指北针(ID:mongjoy)Hi,大家好,这里是芒
种
学院。这是我们的第3个
VBA
自定义插件分享,在之前的推文
中
,我们分享了
VBA
自动生成报表、快速合并文档的小插件。今天我们来分享一个
VBA
自动生成目录的...
Set d = CreateObject("scripting.dictionary")
With Worksheets("sheetName")
r = .Cells(.Rows.Count, 1).End(xlUp).Row
大家好啊!今天的文章简单粗暴,分享5个多行多列提不
重复
值
技巧,总有一个是你想不到的!下面要把左边的表
提取
出不
重复
值
1、操作才是王道想一想,如果数据都在一列,那该多好,直接使用删除
重复
项就能实现
提取
不
重复
值
。现在关键在怎么把多列转成一列?每列复制后,使用剪贴板的全部粘贴,可以直把多列转成一列。2、
函数
很疯狂在F2单元格复制下面的公式,再按Ctrl+Shift+回车一直拖公式到出现空白为止!=INDI...
1、单列
去重
统计公式为:=sumproduct(1/countif(选定列范围,选定列范围)),其原理是在某一列的范围
中
,每个数据出现的次数有多少,然后用1去除。简单点说,假设A列数组
中
出了3次A,每出现一次A,它的比例是1/3,1/3+1/3+1/3=1,求和之后的1,这样A出现了多少次,我们就只统计一次而已。如:A列数据为下所示,现在要统计这个项目
去重
后的数据的个数,即A/S/b/c/d,共5
For i = 1 To 1200
For j = i + 1 To 1200
If Cells(i, 1) = Cells(j, 1) And Cells(i, 2) = Cells(j, 2) And Cells(i, 3) = Cells(j, 3) And Cells(i, 1).Value <...