名字乱怎么整理,实在难到了



;ZhengMu;ChenXue;;ZhangYu;PengRu;
;;ChenXue;PengRu;ZhangYu;;ZhengMu
;ZhengMu;ChenXue;;ZhangYu;PengRu;
;;ChenXue;PengRu;ZhangYu;;ZhengMu
;ZhengMu;ChenXue;;ZhangYu;PengRu;
;;ChenXue;;;PengRu;ZhangYu;;ZhengMu
;ZhengMu;ChenXue;MiKong;ZhangYu;PengRu;
;;ChenXue;PengRu;ZhangYu;;ZhengMu
;KangJie;ZhengMu;ChenXue;;ZhangYu;PengRu;
;;ChenXue;PengRu;ZhangYu;;ZhengMu 

"这么乱的名字,VBA怎么把单元格内含有的名字整理出来!
指点一下谢谢。" 整理结果如图

img

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

二 效果

img

如果有【Office办公软件/VBA办公自动化/文件批处理】问题,欢迎大家和我讨论哈!

把内容读取到字符串,再通过分号作为分隔符,转换为数组处理。