本文转载自公众号:涂涂说Excel,作者:涂大荣。本文著作权归原创作者所有,本人收藏此文仅作为学习之用,不作其他目的,如有侵权请联系我删除。
大家好!我是涂涂
今天的内容
一个简单例子,需要将“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
◆右键单击“按下有惊喜”按钮,弹出“指定宏”对话框
◆选择代码的宏名,确定;选中任一单元格,取消按钮选中状态
◆点击按钮即可一键提取不重复项