各位朋友,你们好,

今天和你们分享Excel中提取不重复值的几种方法,着重介绍【5种】基础操作方法另外附送一个VBA去重代码,拿去就可以直接使用。


一、基础操作方法

1、数据工具直接去重(见下图)

数据工具去重

2、高级筛选(见下图)

高级筛选去重

3、数据透视表(见下图)

数据透视表方法去重

4、条件格式(见下图)

条件格式去重

注:

①条件格式去重的公式:=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时,合并用的连接符。


我是上班下班,因为爱好办公软件、喜欢分享。所以来到这里将我的学习心得和踩过的一些坑,和大家聊聊,希望大家学习我成功的经验,避开我踩过的坑。我和你们一起进步。

好了,今天就聊到这里,感谢各位朋友的关注和支持。

如果你喜欢我分享的内容,请点个赞支持下;

如果你觉得我分享的内容对你有帮助,可以关注我;

如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。

vba 提取 json某个值_Excel中提取不重复值的方法汇总(5种基础+VBA+1个自定义函数)...相关推荐

  1. execl筛选去重_Excel中如何去除重复值,保留唯一值

    有些Excel表格使用时间长了,就出现了一些重复项,有整行内容重复的,也有部分内容重复的,就像下图左边的表格,有三个"张三"和两个"王五",怎样变成右边那个没有 ...

  2. js检测数组对象中是否有重复值

    判断数组对象里的某个值是否都是同一个值 isRepeat=(arr)=> {var hash = {};for(let i=0;i<arr.length;i++){if (!hash[ar ...

  3. ArrayList去除集合中字符串的重复值

    /* * 需求:ArrayList去除集合中字符串的重复值 * * 分析: * 1.创建一个集合对象 * 2.添加多个字符串元素 * 3.创建一个新的集合 * 4.拿旧集合中的元素到新集合中去找 * ...

  4. stream筛选出集合中对象属性重复值

    stream筛选出集合中对象属性重复值 字符串集合筛选 List<String> strings = Arrays.asList("a", "bb" ...

  5. Excel2016表格中只有一列数据有重复值,怎么快速删除重复值

    环景: win 10 专业版 office2016 问题描述: 表格中只有一列数据有重复值,怎么快速删除重复值 解决方案: 1.菜单栏-数据-删除重复值 2.选中要删除的那列D列-删除重复值 3.确定 ...

  6. (C语言)判断数组中是否有重复值

    给一个数组,判断数组里面是否有重复的数,如果有返回1,如果没有返回0 现在写的是蛮力法,时间效率为O(n^2); 目前想到的更好的办法是先排序,然后比较相邻元素是否有相等的.这个的时间效率就取决于排序 ...

  7. [Android]Android布局文件中的android:id=@*属性使用方法汇总以及介绍

    由于项目需要进行Android开发,因此一边开发,一边查阅资料,一边总结了Android布局文件中android:id="@*"属性的使用方法汇总以及介绍.id资源的引用 andr ...

  8. python提取文本中的数字_EXCEL中提取汉字、字母、数字如此简单

    不啰嗦,直奔主题-- 看看如何提取,一般使用函数提取,难度较大 先看一下数据源: 分别提取数字.字母和汉字 方案1:传统函数公式法 传统的函数方式难度较大,这里只演示一下提取数字,其他不再演示 通用数 ...

  9. python pdf提取数据_python从PDF中提取数据的示例

    01 前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都 ...

最新文章

  1. 如何配置FastReport.Net环境
  2. JQuery学习笔记02-选择器把需要的东西揪出来(基础)
  3. java 分布式sql引擎_分布式SQL查询引擎 Presto 性能调优的五大技巧
  4. 浅谈如何学习深度学习(经验之谈,仅供参考)
  5. C#中数据类型及其转换知识点汇总
  6. 云原生时代,.NET5必将称王!
  7. Python 内置模块之 os
  8. 数据库都可以“自动驾驶”了,传统DBA何去何从?
  9. C - Watchmen
  10. vsphere6.0实验拓扑-虚拟机版
  11. 任意给定一个正整数N,求一个最小的正整数M(M1),使得N*M的十进制表示形式里只含有1和0。...
  12. failed to load resource the server responded with a status of 500 (internal server error)
  13. Vue.js 2.0从入门到放弃---入门实例(二)
  14. pe制作linux硬盘的镜像文件_制作一个64M的U盘启动盘(mini linux + winpe +dos toolbox)
  15. 怎样的男女才是最合适的
  16. 高级数理逻辑试卷参考答案
  17. sublimeText3编辑器使用大全
  18. 淘宝天猫价格监控接入方案
  19. Typora DIY 主题背景,以及透明pre代码块。
  20. Linux下history查看历史操作记录,并显示操作时间

热门文章

  1. 去除select框的默认样式 (包括下拉尖括号)
  2. linux物理硬盘和sd的对应关系_计算机硬盘
  3. merge用法linux,Merge用法
  4. python sql注入漏洞 ctf_CTF-WEB 一个登录框SQL盲注
  5. python为mysql设置id自增长_postgresql如何设置id自增长
  6. java计算加减表达式_【Java】计算加减乘除数学公式(简单计算器)含小数
  7. java 无名类做参数_说说你知道的几种主要的JVM参数
  8. Codeblocks无法输出中文和中文乱码解决方法(亲测可用)
  9. Transformer解析
  10. php create database,sql create database 创建数据库命令