|
哦,我刚才看错了。
应该是这样的:- Sub 高级筛选1()
- With Sheets("Sheet1")
- Dim arr, n As Double, dic As New Dictionary, brr()
- n = .Range("a65536").End(xlUp).Row
- arr = .Range("a1:b" & n)
- For i = 1 To UBound(arr)
- If dic.Exists(arr(i, 2)) Then
- m = m + 1
- ReDim Preserve brr(1 To 2, 1 To m)
- brr(1, m) = arr(i, 1): brr(2, m) = arr(i, 2)
- Else
- dic(arr(i, 2)) = arr(i, 1)
- End If
- Next
- .Range("e:f").ClearContents
- .Range("e1:f1") = Array("姓名", "身份证号")
- .Range("e2").Resize(m, 2) = Application.Transpose(brr) 'E、F列放身份证号有重复的
- .Range("c:d").ClearContents
- .Range("c1").Resize(dic.Count) = Application.Transpose(dic.Items) 'C列、D列放不重复值
- .Range("d1").Resize(dic.Count) = Application.Transpose(dic.Keys)
- End With
- End Sub
复制代码 把中间的循环判断中的if成立时的- brr(1, m) = dic(arr(i, 2))
复制代码 改成因为这时候brr里需要存储的是同样的身份证号对应的不同的名字 |
|