|
如果不考虑通用性,则直接写代码速度最快:- Sub test1()
- Dim ar, d, i&, j&, k&, m&, n&, t1$, t2$, t3$, t4$, t5$, t6$, tms#
- tms = Timer
- ar = [a11].CurrentRegion
- m = UBound(ar): n = UBound(ar, 2)
- Set d = CreateObject("Scripting.Dictionary")
- For i = 1 To m
- t1 = ar(i, 1) & "," & ar(i, 2) & "," & ar(i, 3) & "," & ar(i, 4) & "," & ar(i, 5)
- If Not d.Exists(t1) Then
- t2 = ar(i, 1) & "," & ar(i, 2) & "," & ar(i, 3) & "," & ar(i, 4) & "," & ar(i, 6)
- If Not d.Exists(t2) Then
- t3 = ar(i, 1) & "," & ar(i, 2) & "," & ar(i, 3) & "," & ar(i, 5) & "," & ar(i, 6)
- If Not d.Exists(t3) Then
- t4 = ar(i, 1) & "," & ar(i, 2) & "," & ar(i, 4) & "," & ar(i, 5) & "," & ar(i, 6)
- If Not d.Exists(t4) Then
- t5 = ar(i, 1) & "," & ar(i, 3) & "," & ar(i, 4) & "," & ar(i, 5) & "," & ar(i, 6)
- If Not d.Exists(t5) Then
- t6 = ar(i, 2) & "," & ar(i, 3) & "," & ar(i, 4) & "," & ar(i, 5) & "," & ar(i, 6)
- If Not d.Exists(t6) Then
- k = k + 1
- For j = 1 To n
- ar(k, j) = ar(i, j)
- Next
- d(t1) = "": d(t2) = "": d(t3) = "": d(t4) = "": d(t5) = "": d(t6) = ""
- End If
- End If
- End If
- End If
- End If
- End If
- Next
- [p11].CurrentRegion = ""
- [p11].Resize(k, n) = ar
- MsgBox Format(Timer - tms, "0.00s ") & k & "/" & d.Count
- End Sub
复制代码 |
|