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

excel去掉重复内容单元格(Excel菜鸟成长记第四篇)(1)

但是这些重复的内容都是以固定的符号隔开的,所以,我们利用数组和字典方案解决。

首先,我们打开这个工作表,然后选择文件-选项-自定义功能区-开发者工具,勾选,确定。如下图

excel去掉重复内容单元格(Excel菜鸟成长记第四篇)(2)

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

excel去掉重复内容单元格(Excel菜鸟成长记第四篇)(3)

excel去掉重复内容单元格(Excel菜鸟成长记第四篇)(4)

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

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去掉重复内容单元格(Excel菜鸟成长记第四篇)(5)

然后我们就要手动加载 字典了

还是这个vba窗口,工具-引用-浏览-windows-system32找到scrrun.dll-确定,就加载完成

然后我们就可以在表格中输入函数了

结果如下图:

excel去掉重复内容单元格(Excel菜鸟成长记第四篇)(6)

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

,