Excel VBA高效去重函数开发需求:移除单元格内重复项
自定义Excel VBA函数:REMOVEDUPLICATES
嘿,刚好能帮你解决这个问题!下面这个自定义VBA函数完全符合你的需求——它会处理用, (逗号加空格)分隔的字符串,移除重复元素并保留原有顺序,输出时除了最后一项,每个元素后面都跟, 。
怎么添加这个函数?
- 打开你的Excel文件,按下
Alt + F11打开VBA编辑器 - 在左侧的项目资源管理器里,右键点击你的工作簿名称,选择「插入」→「模块」
- 把下面的代码粘贴到新建的模块窗口里:
Function REMOVEDUPLICATES(inputStr As String) As String Dim splitArr() As String Dim dict As Object Dim i As Integer ' 如果输入为空,直接返回空值 If inputStr = "" Then REMOVEDUPLICATES = "" Exit Function End If ' 初始化字典(后期绑定,无需手动引用库) Set dict = CreateObject("Scripting.Dictionary") ' 按", "拆分输入字符串 splitArr = Split(inputStr, ", ") ' 遍历拆分后的数组,把唯一元素存入字典 For i = LBound(splitArr) To UBound(splitArr) ' 忽略空元素(如果有的话) If Trim(splitArr(i)) <> "" Then ' 字典的键唯一,自动跳过重复项 If Not dict.Exists(splitArr(i)) Then dict.Add splitArr(i), "" End If End If Next i ' 把字典的键用", "连接起来,输出结果 REMOVEDUPLICATES = Join(dict.Keys, ", ") End Function
用法示例
输入单元格A1内容:
First_element, Second_element, Third_element, Second_element, Fourth_element
在目标单元格(比如B2)输入公式:=REMOVEDUPLICATES(A1)
输出结果:First_element, Second_element, Third_element, Fourth_element
小提示
- 如果你的字符串分隔符不是
,(比如只有逗号没有空格),可以修改代码里Split(inputStr, ", ")的第二个参数,改成你实际的分隔符就行 - 函数会自动忽略空元素,比如如果输入里有连续的
,,不会生成空的项 - 这个函数会保留元素的原始顺序,不会打乱你原来的排列
内容的提问来源于stack exchange,提问作者thetax
相关产品推荐
相关产品推荐

