m0_61057251 2021-11-06 22:51 采纳率: 100%
浏览 49
已结题

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



;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

  • 写回答

2条回答 默认 最新

  • VBA-守候 2021-12-02 16:54
    关注

    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办公自动化/文件批处理】问题,欢迎大家和我讨论哈!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月10日
  • 已采纳回答 12月2日
  • 创建了问题 11月6日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器