最近Excelで、
VLOOKUPという検索関数を多用することが増えました。
しかし、この関数を使ったエクセルファイルで
検索する元データを日々追加していく度に、
- Excelの動作が重くなる
- 処理が遅い
- フリーズする
- カーソルが丸になって、グルグル回ったままになる
- 他の作業をしようとすると画面が白くなって固まってしまう
そんな状況になってしまいました。
データが大きいから仕方がないと思っていましたが、
大きな表からVLOOKUPを多用する場合でも
処理を早くする方法がありましたので紹介します。
そもそもVLOOKUPをネットの書き込みで学んだ私は、
=VLOOKUP(検索値,検索範囲,検索行数,検索方法)
の最後の検索方法の引数の値は常に
「FALSE(完全一致)」で使っていました。
間違いもないし、分かりやすかったので・・・
しかし、FALSEを使う場合、
元データのすべてデータを検索してから
完全に一致するものがあるかを返す計算式のため、
検索対象のデータが増る度にパソコンがフリーズする
といったことになってしまうようです。
要するにFALSEを使うと効率が悪いということですね。
では、どうすればいいのか?
検索方法の引数の値にはFALSEではなく、
TRUE(近似値)を使います。
ちなみにTRUEの場合は省略可能なので
FALSEを使用する場合、
=VLOOKUP(検索値,検索範囲,検索行数,FALSE)
だったものが、
=VLOOKUP(検索値,検索範囲,検索行数)
の3つの項目のみ指定するだけで計算が可能です。
さて、ここで注意です。
近似値検索を使う場合には
元データを必ず昇順にしておくこと
元データにない場合は検索値に近い値が入る
という点に気を付けてください。
例を挙げて説明します。
以下の表を見てください。
検索元の元データ(左)から
VLOOKUP関数でFALSE(完全一致)を使った場合(中央)と、
VLOOKUP関数でTRUE(近似値)を使った場合(右)です。
元データの5から下が昇順になっていません。
そして「4.2・4.9・6」が抜けています。
TRUEの近似値検索をする場合は
元データを昇順にすることで、
FALSE(完全一致)を使用した場合とほぼ同じ結果が得られますが
元データに無いものは以下のように近似値が表示されます。
例えば、元データに無い「6」の場合
右の近似値を使った式では
「6」近い「5」の値が出てしまうことになります。
(4.2や4.9の場合も同様です)
欠けている数値が無いことを前提に、
元データを昇順にしてあれば
検索方法の引数をFALSEからTRUEに変更することで
劇的に処理が速くなります。
一度おためしあれ!