|
|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
详细说明在附件中,谢谢帮忙!
数据优化下,剩下20638组数据,盼高手出手!
谢谢大家帮忙,原因是R1 = Application.Index(R, i, 0)的速度问题,试试:Option Base 1
Sub Macro1()
t = Timer
Dim R, R1, Rt(), dic As New Dictionary
With Sheets("数据")
n = .[l65536].End(3).Row
R = .Range("a1:l" & n)
For i = 1 To n
If Not IsCF(R(i, 1), R(i, 2), R(i, 3), R(i, 4), R(i, 5), R(i, 6), R(i, 7), R(i, 8), R(i, 9), R(i, 10), R(i, 11), R(i, 12), dic) Then
dic(R(i, 1) & " " & R(i, 2) & " " & R(i, 3) & " " & R(i, 4) & " " & R(i, 5) & " " & R(i, 6) & " " & R(i, 7) & " " & R(i, 8) _
& " " & R(i, 9) & " " & R(i, 10) & " " & R(i, 11) & " " & R(i, 12)) = ""
End If
Application.StatusBar = "正在检测..." & "已经运算:" & Round(i / 206.38, 1) & "%。"
'DoEvents
Next
.[n1].Resize(dic.Count) = Application.Transpose(dic.Keys)
End With
MsgBox Timer - t
Set D = Nothing
Application.StatusBar = ""
End Sub
Public Function IsCF(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, D As Dictionary) As Boolean
IsCF = False
If D.Exists(a1 & " " & a2 & " " & a3 & " " & a4 & " " & a5 & " " & a6 & " " & a7 & " " & a8 _
& " " & a9 & " " & a10 & " " & a11 & " " & a12) Then IsCF = True: Exit Function
If D.Exists(a3 & " " & a4 & " " & a5 & " " & a6 & " " & a7 & " " & a8 & " " & a9 & " " & a10 _
& " " & a11 & " " & a12 & " " & a1 & " " & a2) Then IsCF = True: Exit Function
If D.Exists(a5 & " " & a6 & " " & a7 & " " & a8 & " " & a9 & " " & a10 & " " & a11 & " " & a12 _
& " " & a1 & " " & a2 & " " & a3 & " " & a4) Then IsCF = True: Exit Function
If D.Exists(a7 & " " & a8 & " " & a9 & " " & a10 & " " & a11 & " " & a12 & " " & a1 & " " & a2 _
& " " & a3 & " " & a4 & " " & a5 & " " & a6) Then IsCF = True: Exit Function
If D.Exists(a9 & " " & a10 & " " & a11 & " " & a12 & " " & a1 & " " & a2 & " " & a3 & " " & a4 _
& " " & a5 & " " & a6 & " " & a7 & " " & a8) Then IsCF = True: Exit Function
If D.Exists(a11 & " " & a12 & " " & a1 & " " & a2 & " " & a3 & " " & a4 & " " & a5 & " " & a6 _
& " " & a7 & " " & a8 & " " & a9 & " " & a10) Then IsCF = True: Exit Function
If D.Exists(a1 & " " & a12 & " " & a11 & " " & a10 & " " & a9 & " " & a8 & " " & a7 & " " & a6 _
& " " & a5 & " " & a4 & " " & a3 & " " & a2) Then IsCF = True: Exit Function
If D.Exists(a11 & " " & a10 & " " & a9 & " " & a8 & " " & a7 & " " & a6 & " " & a5 & " " & a4 _
& " " & a3 & " " & a2 & " " & a1 & " " & a12) Then IsCF = True: Exit Function
If D.Exists(a9 & " " & a8 & " " & a7 & " " & a6 & " " & a5 & " " & a4 & " " & a3 & " " & a2 _
& " " & a1 & " " & a12 & " " & a11 & " " & a10) Then IsCF = True: Exit Function
If D.Exists(a7 & " " & a6 & " " & a5 & " " & a4 & " " & a3 & " " & a2 & " " & a1 & " " & a12 _
& " " & a11 & " " & a10 & " " & a9 & " " & a8) Then IsCF = True: Exit Function
If D.Exists(a5 & " " & a4 & " " & a3 & " " & a2 & " " & a1 & " " & a12 & " " & a11 & " " & a10 _
& " " & a9 & " " & a8 & " " & a7 & " " & a6) Then IsCF = True: Exit Function
If D.Exists(a3 & " " & a2 & " " & a1 & " " & a12 & " " & a11 & " " & a10 & " " & a9 & " " & a8 _
& " " & a7 & " " & a6 & " " & a5 & " " & a4) Then IsCF = True: Exit Function
End Function
[ 本帖最后由 Zamyi 于 2009-8-6 19:03 编辑 ] |
|