|
发表于 2013-1-2 21:50
|
显示全部楼层
本楼为最佳答案
耗时小于1S
本帖最后由 suye1010 于 2013-1-3 12:04 编辑
- <P>Sub Test()
- Dim d0, d1, i As Integer, j As Integer, k As Integer, l As Integer, arr, arr1(1 To 13, 1 To 6), ToNo, KC, t
- t = Timer
- On Error Resume Next
- arr = Range("F3:F" & Range("F65536").End(xlUp).Row)
- Set d0 = CreateObject("Scripting.Dictionary")
- Set d1 = CreateObject("Scripting.Dictionary")
- For j = 3 To 15
- For i = 1 To UBound(arr) - j + 1
- ToNo = 0
- For l = 1 To j
- ToNo = ToNo + arr(i + l - 1, 1)
- Next l
- temp = Round(IIf(ToNo / j >= 1, ToNo / j, 0), 0)
- d0(temp) = d0(temp) + 1
- Next i
- For Each KC In d0.Keys
- d1.Add d0(KC) * 100 + KC, IIf(KC, "'" & KC - 1 & "-" & KC + 1, "'0-1")
- Next
- For k = 1 To 3
- arr1(j - 2, 2 * k - 1) = d1(Application.Large(d1.Keys, k))
- arr1(j - 2, 2 * k) = Application.Large(d1.Keys, k) \ 100
- Next k
- d0.RemoveAll
- d1.RemoveAll
- Next j
- Cells(5, "Q").Resize(13, 6) = arr1
- MsgBox "总共耗时" & Timer - t & "s", vbInformation + vbOKOnly
- End Sub
- </P>
复制代码
查询整数范围-1.rar
(25.41 KB, 下载次数: 3, 售价: 1 个金币)
|
|