VBA:字典去重/Split数组分割
示例代码
Sub 字典去重示例()
Dim arr, s As String, brr
'把需要处理的数据粘贴在Sheet1的A1单元格的连续区域,区域赋值给brr成一个二维数组
brr = Range("a1").CurrentRegion
'遍历数组brr,用变量s将各个元素连接起来(因为数据已经用分号分隔了,所以直接连接,方便后面处理)
For i = LBound(brr) To UBound(brr)
s = s & brr(i, 1)
'Debug.Print brr(i, 1)
Next
Rem 如果不去重就不需要下面创建字典的步骤
'定义变量Dic,创建字典对象,用于去重
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
'把上面字符串s用分号分割,赋值数组arr;
arr = Split(s, ";")
For i = LBound(arr) To UBound(arr)
'因为原始字符串中有的地方有连续几个分号的情况,所以分割之后会有空元素,需要判断元素不为空,
'才当作字典的键添加进字典
Rem 去重原理:
'字典的exists(key)方法可以判断元素是否已经存在,不存在才添加为新的键,从而去重
If (Not Trim(arr(i)) = "") And (Not Dic.exists(arr(i))) Then
Dic(arr(i)) = 1
End If
'Debug.Print arr(i)
Next
Dim myKey, j
'遍历字典的键组成的数组【Dic.keys】,得到不重复的名字,按自己的想法赋值给单元格
For Each myKey In Dic.Keys()
j = j + 1
ActiveSheet.Cells(1, j + 1).Value = myKey
Debug.Print myKey
Next
'释放字典对象
Set Dic = Nothing
End Sub
二 效果
如果有【Office办公软件/VBA办公自动化/文件批处理】问题,欢迎大家和我讨论哈!