|
发表于 2016-1-4 14:29
|
显示全部楼层
本楼为最佳答案
像我这样,IF判断语句老老实实地写成嵌套结构,速度就可以提高40%将近1倍。
因为Goto语句效率较低。- Sub test2(krr, crr)
- Dim arr() ', krr, crr
- Dim i&, j&, k&, m&, n&, tms#
- tms = Timer
-
- ' krr = [a1].CurrentRegion '3,000*8
- ' crr = [n1].CurrentRegion '5,000,000*12
- m = UBound(crr)
- n = UBound(krr)
-
- ReDim arr(2 To n, 9 To 12)
-
- For i = 2 To n 'UBound(krr)
- For j = 2 To m 'UBound(crr)
- If krr(i, 1) >= crr(j, 1) Then
- If krr(i, 2) >= crr(j, 2) Then
- If krr(i, 3) <= crr(j, 3) Then
- If krr(i, 4) <= crr(j, 4) Then
- If krr(i, 5) >= crr(j, 5) Then
- If krr(i, 6) >= crr(j, 6) Then
- If krr(i, 7) >= crr(j, 7) Then
- If krr(i, 8) >= crr(j, 8) Then
-
- For k = 9 To 12
- arr(i, k) = arr(i, k) + crr(j, k)
- Next k
-
- End If
- End If
- End If
- End If
- End If
- End If
- End If
- End If
- Next j
- Next i
- ' MsgBox Format(Timer - tms, "0.000s")
-
- ' Range("i2").Resize(UBound(krr) - 1, 4) = arr
- End Sub
复制代码 |
|