原标题:【Excel VBA】使用字典快速对数据去重

数据去重复一直是数据整理过程中常见的问题之一,Excel解决方法有【删除重复项】、【高级筛选】、【数据透视表】、SQL语句、VBA的字典和集合等等……各有所长也各有所短。

可能还有小伙伴说还有函数……那啥……坦白说,“去重”一直都是函数最大的硬伤之一,虽然数组公式可以实现,但那些数组公式的适应性、可操作性和运算效率都是渣渣的一匹。说来也是奇怪……绝大部分语言都有专门的去重函数,比如distinct,但偏偏Excel函数没有……从03到16十几年过去……一直没有…………。

说正事儿……今天和大家分享的方法是VBA的字典法……。

举个栗子。

如下图所示,A列是一些数据,可能存在重复值,需要在C列得出不重复值,并告知不重复值的个数。

代码如下:

Sub Mydistinct()

'vba编程学习与实践~看见星光

Dim d As Object, arr, brr, i&, k&, s$

Set d = CreateObject("ing.dictionary")

'后期引用字典

'd.CompareMode = vbTextCompare

'不区分字母大小写

arr = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row)

'数据源装入数组arr

ReDim brr(1 To UBound(arr), 1 To 1)

'声明一个数组brr放结果。

For i = 2 To UBound(arr)

'标题行不要,从第2行开始遍历

s = arr(i, 1)

'强制将数据转换成字符串类型,原因见小贴士

If Not d.exists(s) Then

d(s) = ""

'如果字典中不存在s,则作为关键字装入字典

k = k + 1

'累加个数

brr(k, 1) = arr(i, 1)

'装入结果数组

End If

Next

[c:c].ClearContents

[c1] = "结果"

With [c2].Resize(k, 1)

.NumberFormat = "@"

'设置文本格式,防止某些文本数值变形

.Value = brr

End With

MsgBox "一共为你提取了:" & k & "个不重复值。"

Set d = Nothing

'释放字典

End Sub

运算结果:

小贴士:

1,该段代码区分字母大小写,即A和a并不重复,如果需要不区分字母大小写,解除代码中下面语句的注释块。

d.CompareMode = vbTextCompare

2,代码中有一句s = arr(i, 1),意思是将数据类型转换为字符串变量s。之所以这么操作,是因为字典关键字认为数值和文本型数值是不相等的,举个例子,如下图,数值123和文本123,字典认为并不重复。

另外,即便数据区域的数值不存在文本型数值,也建议将之强制转换为字符串类型。

举个例子,点击【阅读原文】可以获取一个示例文件,该示例文件的A列存在大量重复数值,但不论【删除重复项】还是【高级筛选】,均不能准确数据去重,如果不将数值类型转换为字符串,字典同样也不能准确去重,不信,你就测试看看呗~

握爪,致安,下期见~

图文作者:看见星光返回搜狐,查看更多

责任编辑:

excel函数去重_【Excel VBA】使用字典快速对数据去重相关推荐

  1. 小福利,excel里面采用sumifs多条件判断来快速整理数据,将一维表转为二维表,countifs多条件计数数据

    小福利,excel里面采用sumifs多条件判断来快速整理数据,将单记录数据转换成横纵坐标表格数据 先看一下原数据,杂乱无章 第一步对姓名字段进行排序,看结果 第二步进行分类汇总 分别显示三个层次的分 ...

  2. excel python插件_再见 VBA!神器工具统一 Excel 和 Python

    大家好,我是东哥. 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Notebok都是我每天必用的工具,而且两 ...

  3. 15个常用excel函数公式_【Excel公式函数】一大波常用的日期公式来袭,强烈建议收藏!...

    使用Excel就难免会遇到与日期有关的问题,今天分享一大波实用公式,可以帮你解决常见的日期类问题. 1.只提取日期公式:=INT(A2) 2.只提取时间公式:=MOD(A2,1) 3.只提取年份公式: ...

  4. excel函数大全_让你的EXCEL工作效率翻倍的函数大全

    详细的函数说明和应用实例可查看我上传的<EXCEL快速学习教程视频>对应各类函数教程 常用函数大全 使用函数:公式选项卡>函数库>插入函数.常用函数.最近使用函数.财务.逻辑. ...

  5. excel函数手册_一个函数高手的成长之路

    作者 | Jodie 秋叶Excel训练营优秀学员 早上跑步听樊登读书会,讲到家长如何培养孩子的社交能力,有一个例子非常好. 你的孩子因为一个玩具,和其他的小朋友争吵起来了,你会怎么处理呢? 大部分家 ...

  6. 15个常用excel函数公式_项目上最常用的Excel函数公式大全,现在看还不晚

    做工程的免不了要做资料算量,Excel是工作中最常用的工具之一.只要搞清楚它的一些使用小技巧,工作效率那是嗖嗖的往上蹭啊.下面这些,你就绝对不能错过! 一.数字处理 1.取绝对值 =ABS(数字) 2 ...

  7. php excel 函数,php实现excel中rank函数功能的方法

    php实现excel中rank函数功能的方法 发布于 2015-10-28 18:54:25 | 77 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

  8. 大学计算机excel函数课件,《Excel函数教程》PPT课件.ppt

    <<Excel函数教程>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<Excel函数教程>PPT课件.ppt(46页珍藏版)>请在装配图网上搜 ...

  9. 计算机excel函数教程,excel函数,教您excel中mode函数的使用方法

    将Excel学好不仅能快速高效的工作,提高工作效率,同时自己也会获益匪浅.学习函数就要学习其含义.语法格式再结合具体事例加以运用,所以小编今天就来个的将说说使用Excel中的mode函数求众数的方法. ...

  10. 单列表_使用Excel中的quot;记录单quot;功能快速录入数据

    在Excel中进行数据录入的时候,平常都是一行一行地录入数据,但是有时候在单元格之间,行与行,列与列之间频繁地切换去录入数据,费事费力还容易出错. 今天给你推荐一个既好用又有效率的Excel中的隐藏功 ...

最新文章

  1. AI一分钟 | 厉害了!英特尔正式发布电动飞行汽车;贝佐斯笑了,多家PC厂商结盟亚马逊Alexa,直怼微软Cortana
  2. VIPER 和 MVVM 到底有什么区别
  3. c+和python的区别-python和c先学哪个
  4. 《图解HTTP》读书笔记--第5章与HTTP协作的Web服务器
  5. 使用curl工具测试SAP Spartacus的SSR模式是否工作正常
  6. 有些图,只要看错一眼就再也回不去了!
  7. php缓存类,PHP缓存类
  8. 矿井通风计算c语言_矿井通风机主要参数的含义
  9. [转]Sublime Text 2 C++编译运行简单配置
  10. echart itemStyle属性设置
  11. 读取无线手柄数据_全透外形,优秀手感,双平台通吃:倍思Switch无线手柄
  12. ssh 连接linux 乱码问题,SSH 连接 Ubuntu 时的中文乱码问题
  13. js 自己常用的小小技巧(持续更新)
  14. wc 统计文件字节数、字符数、单词数
  15. web测试之总流程归纳
  16. MindManager 2021授权许可密钥思维导图软件
  17. 什么是串口协议转换器?串口转换器有哪些特点?
  18. 【日常训练赛】C - Prove Him Wrong
  19. AHRS系统的基本构成
  20. Matlab 4. Matlab2016 不能保存数据(变量)的解决方法(中文版)-v7.3 switch

热门文章

  1. java生成三位随机数_java工具类(三)之生成若干位随机数
  2. josn 格式 解析
  3. Spring WebFlux - WebClient连接池简单测试和代码分析
  4. Java、JSP小额支付管理平台
  5. 中芯国际公布最新人事调整(5张数据表揭开公司真实情况)
  6. 云计算与大数据” 研讨会:迎来新的科学价值
  7. xsmax进入dfu模式_没有home键的iPhone XS怎么进入恢复模式?我教你
  8. matlab画图semilogy
  9. PCB设计中电流与线宽的关系
  10. 混淆电路(Garbled Circuit)