|
こんにちは
>配列の要素数に限界があるので注意。
でした。(..)
配列ならループしてもそんなに時間掛からないですね。
Sub test1()
Dim AAA(1 To 1000000)
Dim i As Long
Dim maxD As Long
Dim minD As Long
For i = 1 To UBound(AAA)
AAA(i) = i
Next
maxD = AAA(1): minD = AAA(1)
For i = 2 To UBound(AAA)
maxD = IIf(AAA(i) > maxD, AAA(i), maxD)
minD = IIf(AAA(i) < minD, AAA(i), minD)
Next
Debug.Print maxD
Debug.Print minD
Erase AAA
End Sub
配列(↓では単純に数値)を空のレコードセットに読み込んでソートしてって
試しましたけど遅かった。(AddNewがネックでした。)
Sub test2()
Dim i As Long
Dim c As Long
Dim v As Variant
Dim rs As Object
Dim s As String
Set rs = CreateObject("ADODB.Recordset")
With rs
With .Fields
.Append "data", 14 'adDecimal
End With
.CursorLocation = 2
.Open
For i = 1 To 1000000
.AddNew
!data = i
Next
.MoveFirst
If .RecordCount > 0 Then
.Sort = "[data] DESC"
Debug.Print "最大値 ---" & .GetRows(1, 0, "data")(0, 0)
.Sort = "[data] ASC"
Debug.Print "最小値 ---" & .GetRows(1, 0, "data")(0, 0)
End If
.Close
End With
Set rs = Nothing
End Sub
|
|