去除单个单元格重复值 Excel菜鸟成长记——第四篇

【去除单个单元格重复值 Excel菜鸟成长记——第四篇】今天,同事发给我一个表格 , 需要制作纸箱唛头,但是她里面的型号有些是重复的 , 由于excel中自带的函数不具备去除重复值得功能,所以只能利用vba来自己编写函数,见图:


去除单个单元格重复值 Excel菜鸟成长记——第四篇

但是这些重复的内容都是以固定的符号隔开的,所以,我们利用数组和字典方案解决 。
首先,我们打开这个工作表,然后选择文件-选项-自定义功能区-开发者工具,勾选,确定 。如下图


去除单个单元格重复值 Excel菜鸟成长记——第四篇



然后按下ALT F11组合键盘 , 弹出vba开发窗口,然后点击插入——模块


去除单个单元格重复值 Excel菜鸟成长记——第四篇



去除单个单元格重复值 Excel菜鸟成长记——第四篇

随便插入一个模块就行哈 , 然后双击模块,把下面这段黄色背景代码复制到右边的空白区域就可以


Public Function 提取不重复值(ByVal 单元格 As Range, ByVal 间隔符号 As String) As String '定义函数过程 , 值传递,返回值类型为字符串


'字典调用方法一:引用法(前期绑定)
'vba ide-工具-引用-浏览-windows-system32找到scrrun.dll-确定


'Dim 字典 As Object '定义一个字典变量,貌似后期声明字典不起作用
'Set 字典 = CreateObject("scripting.Dictionary")'貌似后期声明字典不起作用
'*******************************定义区域*****************************************
Dim 字典 As New Dictionary '定义一个字典变量
Dim 结果 As String '定义结果
Dim 数组 As Variant '定义一个数组
Dim 数组元素 As Variant '定义一个数组元素
Dim 字典条目 As Variant '定义一个数组元素
Dim rng As Range


'*******************************代码开始区域*****************************************
'功能一


If Len(间隔符号) >= 0 Then


数组 = Split(单元格.Value, 间隔符号) '利用拆分函数通过固定间隔符号对内容进行元素拆分


For Each 数组元素 In 数组 '遍历数组元素


字典(Trim(数组元素)) = "" '这里把每个元素所对应的条目进行修改,字典的特性是没有这个条目就把这个条目加进去 , 顺便清除重复项
Next
End If
'功能二
For Each 字典条目 In 字典 '提取字典里的条目写入单元格


结果 = 结果 & 间隔符号 & 字典条目 '将其字符串连接


Next


提取不重复值 = Replace(结果, 间隔符号, "", 1, 1)


字典.RemoveAll


End Function
'*******************************代码结束区域*****************************************
结果如下显示:
去除单个单元格重复值 Excel菜鸟成长记——第四篇

然后我们就要手动加载 字典了
还是这个vba窗口,工具-引用-浏览-windows-system32找到scrrun.dll-确定,就加载完成
然后我们就可以在表格中输入函数了
结果如下图:


去除单个单元格重复值 Excel菜鸟成长记——第四篇



好了,今天的学习就到这,谢谢大家

相关经验推荐