Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1590|回复: 2

[已解决]字典2列去重复,导出遇见问题

[复制链接]
发表于 2021-7-31 11:35 | 显示全部楼层 |阅读模式
本帖最后由 釜底抽薪 于 2021-7-31 17:03 编辑

工作簿1.zip (14.65 KB, 下载次数: 13)
发表于 2021-7-31 13:15 | 显示全部楼层
Sub tt()
    Dim k As Long, d, str As String, n As Integer
    For n = 3 To 4
        Set d = CreateObject("scripting.dictionary")
        For k = 3 To Cells(Rows.Count, 3).End(3).Row
            str = Cells(k, 3).Text
            d(str) = ""
        Next
        Cells(3, n + 2).Resize(d.Count, 1) = Application.Transpose(d.keys)
        Set d = Nothing
    Next n
End Sub
回复

使用道具 举报

发表于 2021-8-2 09:46 | 显示全部楼层    本楼为最佳答案   
Sub 字典去重1()
Dim ar(), br() As Double, cr
ReDim ar(2 To [b65536].End(xlUp).Row, 1 To 2)
For r = 2 To UBound(ar)
    For c = 1 To 2
    ar(r, c) = Cells(r, c + 1)
    Next
Next
On Error Resume Next
Set d = CreateObject("scripting.dictionary")
For i = 1 To UBound(ar)
    d.Add ar(i, 1) & "\" & ar(i, 2), "" '两列值连接成一个值作为字典键值
Next i
tem = d.keys
[D2].Resize(UBound(tem), 1) = WorksheetFunction.Transpose(tem)

ReDim br(1 To UBound(tem) + 1, 1 To 2) '再将键值拆分成两个值,赋予数组
For i = 0 To UBound(tem)
    cr = Split(tem(i), "\")
    br(i + 1, 1) = cr(0)
    br(i + 1, 2) = cr(1)
Next i
[D2].Resize(d.Count, 2) = br

End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-20 01:11 , Processed in 0.263009 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表