快好知 kuaihz

「ExcelVBA」字典快速提取不重复项

本文转载自公众号:涂涂说Excel,作者:涂大荣。本文著作权归原创作者所有,本人收藏此文仅作为学习之用,不作其他目的,如有侵权请联系我删除。

大家好!我是涂涂

「Excel VBA」的字典用法--快速提取不重复项。

今天的内容

一个简单例子,需要将“Sheet1”工作表当中A列不重复的职位提取出来,结果填入C列淡粉色区域中。处理这类问题的方法有很多,比如删除重复项,高级筛选不重复项,Power Query,VBA等方法。

条条大路通罗马,今天涂涂分享使用VBA的字典来处理这类问题。

关联链接:

提取不重复项,这方法你用过吗?

重复项效果动图

操作步骤

STEP 01

先将xlsx后缀的文件,另存为xlsm后缀的文件(xls后缀的不需要),否则工作簿关闭后代码就消失了。

◆打开xlsx后缀的文件,【开始】【另存为】

◆保存类型选择“Excel启用宏的工作簿”

STEP 02

◆按【Alt F11】打开VBE编辑界面

◆左侧选中该工作簿(看名称),右键【插入】【模块】

◆双击模块,在代码编辑窗口写入代码,关闭VBE界面

代码

Sub 去重复项()

   Dim i As Long, m As Long, k As Long

   Dim Str As String

   Dim dic As Object

   Dim Arr

   "A列非空行数,赋值给m

   m = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

   "字典

   Set dic = CreateObject("scripting.dictionary")

   "将数据装入数组Arr

   Arr = Range("A3:A" & m)

   For i = 3 To UBound(Arr, 1)

       "将数据转换成字符串类型

       Str = Arr(i, 1)

       "如果字典中不存在Str,则

       If Not dic.exists(Str) Then

           "将Str作为关键字装入字典

           dic(Str) = ""

       End If

   Next

   "清空C列内容

   [C:C].ClearContents

   "以C3单元格为起始,调整数据写入区域,写入区域行数为dic.Count数目

   "将字典关键字转置后写入区域

   Range("C3").Resize(dic.Count, 1).Value = Application.Transpose(dic.keys)

   "清空字典

   Set dic = Nothing

End Sub

STEP 03

◆右键单击“按下有惊喜”按钮,弹出“指定宏”对话框

◆选择代码的宏名,确定;选中任一单元格,取消按钮选中状态

◆点击按钮即可一键提取不重复

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:字典  字典词条  提取  提取词条  ExcelVBA  ExcelVBA词条  重复  重复词条  快速  快速词条  
办公

 PPT看着没有feel?学会这样...

很多人在制作PPT的时候,图文素材都是曹操插入了事,完全没有二次处理。但其实PPT大有学问,学会这样处理一下,你的PPT瞬间秒变高档次!一、排版技巧1、排列当你...(展开)

办公

 习惯用VLOOKUP函数对账,各...

读者对VLOOKUP函数情有独钟,下面通过几种格式变化来说明。1.根据批号核对两个表的数量。批号都是唯一的,可以直接用VLOOKUP函数查找,再相减获取差异,不...(展开)