|
发表于 2015-1-25 21:20
|
显示全部楼层
本楼为最佳答案
两列姓名,所有没有重复的姓名显示在第三列:- Option Explicit
- Sub test()
- Dim d As Object
- Dim arr, brr, crr()
- Dim dKeys, dItems
- Dim i&, k&
-
- Set d = CreateObject("scripting.dictionary")
-
- With Sheet1
- arr = .Range("a1:a" & .Cells(Rows.Count, 1).End(3).Row)
- brr = .Range("b1:b" & .Cells(Rows.Count, 2).End(3).Row)
- End With
-
- cf d, arr
- cf d, brr
-
- dKeys = d.keys
- dItems = d.items
- ReDim crr(1 To d.Count, 1 To 1)
-
- For i = 1 To d.Count
- If dItems(i - 1) = 1 Then
- k = k + 1
- crr(k, 1) = dKeys(i - 1)
- End If
- Next
-
- Sheet1.Range("c1").Resize(k) = crr
-
- End Sub
- Sub cf(dic As Object, ByVal ar)
- Dim i&
- For i = 1 To UBound(ar)
- If dic.exists(ar(i, 1)) Then
- dic(ar(i, 1)) = 2
- Else
- dic(ar(i, 1)) = 1
- End If
- Next
- End Sub
复制代码 |
|