VBA入门到进阶常用知识代码总结28

第28集 VBA字典二
123、 提取不重复的值
Sub 提取不重复的产品()
Dim d As New Dictionary
Dim arr, x
arr = Range(“a2:a12”)
For x = 1 To UBound(arr)
d(arr(x, 1)) = “” '利用字典key列不重复特点,装入不重复的key值,item列全设置为空
Next x
Range(“c2”).Resize(d.Count) = Application.Transpose(d.Keys)
End Sub
124、 多行2列分类汇总
Sub 汇总()
Dim d As New Dictionary
Dim arr, x
arr = Range(“a2:b10”)
For x = 1 To UBound(arr)
d(arr(x, 1)) = d(arr(x, 1)) + arr(x, 2) 'key对应的item的值在原来的基础上加新的(第一次循环时为d(arr(x,1))=空),并覆盖原来的item值,实现累加效果
Next x
Range(“d2”).Resize(d.Count) = Application.Transpose(d.Keys)
Range(“e2”).Resize(d.Count) = Application.Transpose(d.Items)
End Sub
125、 字典的Key和Item的双向查找
Sub 多表双向查找()
Dim d As New Dictionary
Dim x, y
Dim arr
For x = 3 To 5
arr = Sheets(x).Range(“a2”).Resize(Sheets(x).Range(“a65536”).End(xlUp).Row - 1, 2)
For y = 1 To UBound(arr)
d(arr(y, 1)) = arr(y, 2) '将学号装入key中,item值等于姓名
d(arr(y, 2)) = arr(y, 1) '将姓名装入key中,item值等于学号,生成1个key值包含学号和姓名的字典,如果姓名重复,将把最后一次出现的姓名对应的学号装入字典覆盖原来的学号值
Next y
Next x
MsgBox d(“C1”)
MsgBox d(“吴情”)
End Sub

发布了47 篇原创文章 · 获赞 0 · 访问量 221

猜你喜欢

转载自blog.csdn.net/tiansdk320/article/details/104364800