VBA Advance7
第7章 リニアサーチ
Excelの関数の中にVlookup関数があります。Vlookup関数は別の表から検索値に対応するデータを取得するため、非常に使用頻度が高い関数です。VBAの場合は、サーチのアルゴリズムを使えばVlookup関数と同じことができます。
リニアサーチとはデータを先頭から順番に探す、アルゴリズムとしては簡単なサーチです。ただし先頭から順番に探すので、表のデータが増えればスピードが遅くなります。10000件なら平均で5000件目で見つかり、見つからない場合は10000件探すことになります。そのためデータ量が増えれば増えるほど遅くなる欠点があります。
ちなみにVlookup関数の引数がfalseはリニアサーチになります。Vlookup関数の引数がfalseはデータ量が多くなると遅くなります。
リニアサーチのアルゴリズム
同じブックにあるSheet2のシートの表のA列に該当するC列を取得する、リニアサーチで求める方法(検索値はsDataとする)
Dim ws As Worksheet
Dim i As Long
Dim result As Variant
Set ws = ThisWorkbook.Sheets("Sheet2")
result = ""
For i = 2 To ws.Cells(Rows.Count, 1).End(xlup).Row
If sData = ws.Cells(i, 1) then
result = ws.Cells(i, 3)
Exit For
End If
Next
ForステートメントとIfステートメントの組み合わせで、ループの処理と複数のシートをまたぐ処理ができれば比較的簡単に作れます。