我们都知道,字典中的key是不允许重复的,所以利用这个特性,我们就可以轻而易举的对数据进行去重复。在一列数据中去重复很好办,如果需要去重复的数据不再一个表中该怎么办呢?
如下:
想要把上海、江苏、浙江、福建四个分公司的产品数据进行去重复并汇总到产品表中。
思路:
我们只需要用for each 分别循环出每个分公司并把其产品数据写入字典即可。
代码:
Sub 去重复()
Dim d As Object, sh As Worksheet, arr, i%
On Error Resume Next
Set d = CreateObject('scripting.dictionary')
For Each sh In Worksheets
If sh.Name <> '产品' Then
arr = sh.Range('a2', sh.[a2].End(xlDown))
For i = 1 To UBound(arr)
d.Add arr(i, 1), ''
Next
End If
Next
Sheets('产品').[a2].Resize(d.Count, 1) = Application.Transpose(d.keys)
End Sub
这里值得注意的是:
arr = sh.Range('a2', sh.[a2].End(xlDown))
我写代码时一开始写成了:
arr = sh.Range('a2', [a2].End(xlDown))
怎么都出不来结果,按F8检查的过程中才发现要如此表达,括号外面要写明是哪张表里的区域,括号里面[a2]前面也要写sh,否则会认为是活动工作表的[a2],结果就会出错。
今天的分享就到这里了!
想更深入的学习视频教程,请进入公众号后台菜单中了解详情!
联系客服