VBA中使用字典对数据去重

示例

Sub aa()
    Set a = ActiveSheet
    Set zd = CreateObject("Scripting.Dictionary")
    x = a.UsedRange.Rows.Count
    For i = 1 To x
        zd(a.Cells(i, 1).Value) = a.Cells(i, 2)
    Next
    t1 = zd.keys
    t2 = zd.items
    Range("c1").Resize(zd.Count, 1) = Application.WorksheetFunction.Transpose(t1)
    Range("d1").Resize(zd.Count, 1) = Application.WorksheetFunction.Transpose(t2)
End Sub

1. Sub aa(): 这是一个子过程(Subroutine)的开始,名为 "aa"。

2. Set a = ActiveSheet: 这一行代码将当前激活的工作表(ActiveSheet)赋给变量 a,以便稍后引用这个工作表的数据。

3. Set zd = CreateObject("Scripting.Dictionary"): 这一行代码创建了一个空的字典对象,命名为 zd,以便存储数据的重新组织。

4. x = a.UsedRange.Rows.Count: 这一行代码获取了工作表 a 中使用的行数,即数据的总行数,将其存储在变量 x 中。

5. For i = 1 To x: 这一行代码开始一个 For 循环,将从 1 循环到 x,即数据总行数。

6. zd(a.Cells(i, 1).Value) = a.Cells(i, 2): 在循环中,这一行代码将工作表 a 中第 i 行、第 1 列的单元格的值作为键,将同一行、第 2 列的单元格的值作为值存储在字典 zd 中。这将创建一个键-值对,其中键是第 1 列的值,值是第 2 列的值。

7. Next: 这是 For 循环的结束。

8. t1 = zd.keys: 这一行代码将字典 zd 中的所有键提取出来,并存储在名为 t1 的数组中。

9. t2 = zd.items: 这一行代码将字典 zd 中的所有值提取出来,并存储在名为 t2 的数组中。

10. Range("c1").Resize(zd.Count, 1) = Application.WorksheetFunction.Transpose(t1): 这一行代码将数组 t1 转置后,将其内容输出到工作表 a 中的 C 列,从 C1 单元格开始,行数等于字典 zd 中的键的数量。

11. Range("d1").Resize(zd.Count, 1) = Application.WorksheetFunction.Transpose(t2): 类似地,这一行代码将数组 t2 转置后,将其内容输出到工作表 a 中的 D 列,从 D1 单元格开始,行数等于字典 zd 中的值的数量。

将字典的键和值分别输出到工作表的 C 列和 D 列。整个过程重新组织了数据,将重复的键合并为一个,以便更好地呈现和对数据去重。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值