相关文章推荐
豪气的苹果  ·  Android social ...·  1 年前    · 
奔跑的煎饼果子  ·  Co Print·  2 年前    · 
还单身的消炎药  ·  Postman - Assertion | ...·  2 年前    · 

①条件格式去重的公式:=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 &lt...