VLOOKUPを高速化する方法

Pocket

ExcelのVLOOKUPが遅いのはFALSEを使うからです。
TRUEを使えばはやくなります。ただし次の点に注意する必要があります。
- セル範囲を左端の値で昇順にしておく。
- 近似一致なので不一致の場合がある。

結論

数式は次のとおりです。

=IF(VLOOKUP(検索値,セル範囲,1)=検索値,VLOOKUP(検索値,セル範囲,列番号),NA())

まずVLOOKUPで検索値自体を求めます。
一致するものがあれば、今度はVLOOKUPで必要な値を求めて返します。
一致するものがなければ#N/Aを返します。

使用例

VLOOKUPを使い、A列を検索してB列を返します。
D列に検索値があります。
E1セルに
=IF(VLOOKUP(D1,A:A,1)=D1,VLOOKUP(D1,A:B,2),NA())
とセットします。

解説

VLOOKUP(検索値, セル範囲, 列番号, 検索方法)

検索方法はTRUEかFALSEで指定します。
TRUE 近似一致 検索値以下で一致するものを返す
FALSE 完全一致 検索値と一致するものを返す

TRUE(近似一致)を使う場合、検索対象が昇順になっていないと使い物になりません。
だから一般的にFALSE(完全一致)を使います。

ではTRUEがなぜあるか。おそらく次のような理由です。
検索のアルゴリズムとしてよく使われるのが二分探索と線形探索です。
二分探索のほうがはやいです。

VLOOKUPの場合、TRUE(近似一致)は二分探索、FALSE(完全一致)は線形探索が使われているそうです。
つまりFALSEを使うからVLOOKUPは遅いのです。

[ 2020年10月15日 | カテゴリー: Excel | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報