私は一般にGetTickCount API関数を使用します。あなたが数週間または数ヶ月以上の時間を測定しようとしていない限り、正確でなければなりません。以下は、異なるループ測定が時間通りに行われていることを示す例です。 1 tick = 1ms
Private Declare Function GetTickCount Lib "kernel32"() As Long
Sub test()
Dim nTime
nTime = GetTickCount
Set load_array = Range("a5:z65000")
array_index = WorksheetFunction.Match("Test 15", WorksheetFunction.Index(load_array, 0, 1), 0)
rngtimer = GetTickCount - nTime
nTime = GetTickCount
load_array = Range("a5:z65000").Value
array_index = WorksheetFunction.Match("Test 15", WorksheetFunction.Index(load_array, 0, 1), 0)
arraytimer = GetTickCount - nTime
nTime = GetTickCount
load_array = Range("a5:z65000").Value
For a = LBound(load_array) To UBound(load_array)
If load_array(a, 1) = "Test 15" Then
array_index = a
End If
Next
arraylooptimer = GetTickCount - nTime
nTime = GetTickCount
For a = 1 To 65000
If Range("a5").Offset(a, 0) = "Test 15" Then
array_index = a
End If
Next
excelooptimer = GetTickCount - nTime
MsgBox ("Range Search: " & rngtimer & vbCrLf & _
"Array Search: " & arraytimer & vbCrLf & _
"ArrayLoop Search: " & arraylooptimer & vbCrLf & _
"ExcelLoop Search: " & excelooptimer)
End Sub
検索はどのように実装されていますか?リニア?バイナリ?キャッシング/ルックアップテーブルや他の最適化を使用していますか? – Jacob
場合によっては、Excelの隠しシートにデータを書き込んで[Auto Filter](http://office.microsoft.com/en-us/excel-help/filter-by-using-advanced-criteria-HP005200178)を使用する方が高速になることがあります.aspx)をワイルドカード基準で検索します。 – osknows
私はルックアップテーブルを使用していませんし、Cularisをキャッシュすることが何を意味するのか分かりません。私はVBAの初心者ですので、私はまだ勉強しています。 –