慢慢消化理解代码的奥妙之处。
- Sub TEST6()
- Dim ii, jj
- Dim ar, br, i&, Dict As Dictionary
- Dim Arr
- Dim Rr
- Application.ScreenUpdating = False
- Set Dict = New Dictionary
-
- ar = [A4].CurrentRegion.Value
- For i = 1 To UBound(ar)
- If Not Dict.Exists(ar(i, 1)) Then
-
- Dict(ar(i, 1)) = Array(ar(i, 1), 1, "找出关联的数据", ar(i, 2))
- Rr = Dict.Count - 1
- With Dict
- Arr = .Items(Rr)
- Debug.Print "Not Dict.Exists(" & ar(i, 1) & ")", Dict.Keys(Rr),
- For jj = 0 To UBound(Arr)
- Debug.Print Arr(jj),
- Next jj
- Debug.Print Rr
- 'Debug.Print
- End With
- Else
- br = Dict(ar(i, 1))
- br(1) = br(1) + 1
- br(3) = br(3) & "," & ar(i, 2)
- Dict(ar(i, 1)) = br
- Debug.Print , "Dict.Exists(" & ar(i, 1) & ")", Rr, Dict.Count - 1, br(1) + 1, br(3), ar(i, 2)
- 'Stop
- End If
- Next i
-
- [D11].Resize(Dict.Count, 4) = Application.Rept(Dict.Items, 1)
-
- Set Dict = Nothing
- Application.ScreenUpdating = True
- Beep
- End Sub
复制代码
Not Dict.Exists(aa) aa aa 1 找出关联的数据 KK1 0
Not Dict.Exists(bb) bb bb 1 找出关联的数据 KK2 1
Not Dict.Exists(cc) cc cc 1 找出关联的数据 KK3 2
Dict.Exists(aa) 2 2 3 KK1,KK4 KK4
Dict.Exists(bb) 2 2 3 KK2,KK5 KK5
Dict.Exists(cc) 2 2 3 KK3,KK6 KK6
Dict.Exists(aa) 2 2 4 KK1,KK4,KK7 KK7
Dict.Exists(bb) 2 2 4 KK2,KK5,KK8 KK8
Dict.Exists(aa) 2 2 5 KK1,KK4,KK7,KK9 KK9
Dict.Exists(bb) 2 2 5 KK2,KK5,KK8,KK10 KK10
Dict.Exists(cc) 2 2 4 KK3,KK6,KK11 KK11
Dict.Exists(aa) 2 2 6 KK1,KK4,KK7,KK9,KK12 KK12
Not Dict.Exists(d1) d1 d1 1 找出关联的数据 KK13 3
Not Dict.Exists(d2) d2 d2 1 找出关联的数据 KK14 4
Not Dict.Exists(d3) d3 d3 1 找出关联的数据 KK15 5
Not Dict.Exists(d4) d4 d4 1 找出关联的数据 KK16 6
Not Dict.Exists(d5) d5 d5 1 找出关联的数据 KK17 7
Dict.Exists(d1) 7 7 3 KK13,KK18 KK18
Dict.Exists(d2) 7 7 3 KK14,KK19 KK19
Dict.Exists(d3) 7 7 3 KK15,KK20 KK20
Dict.Exists(aa) 7 7 7 KK1,KK4,KK7,KK9,KK12,KK21 KK21
Dict.Exists(bb) 7 7 6 KK2,KK5,KK8,KK10,KK22 KK22
Dict.Exists(cc) 7 7 5 KK3,KK6,KK11,KK23 KK23
Dict.Exists(aa) 7 7 8 KK1,KK4,KK7,KK9,KK12,KK21,KK24 KK24
Dict.Exists(d1) 7 7 4 KK13,KK18,KK25 KK25
Dict.Exists(d2) 7 7 4 KK14,KK19,KK26 KK26
Not Dict.Exists(pp) pp pp 1 找出关联的数据 KK27 8
Dict.Exists(pp) 8 8 3 KK27,KK28 KK28
Dict.Exists(pp) 8 8 4 KK27,KK28,KK29 KK29
|