VLOOKUPを学ぶ時は、まず最初に完全一致(FALSE)での使い方を覚えることから始めます。「検索値と一致するもの」を探し、あれば表示し無ければエラーと非常にわかりやすい動きである上、実務でこの関数を使う時は完全一致が適したパターンが圧倒的に多いからです。
しかし、完全一致は任せろ!VLOOKUPどんと来い!と強気に構えていても、それだけだとある段階で必ず壁に当たります。それは「〇〇以上〇〇未満に該当する値を検索する」という条件が登場した時。
そこで思い出してください。もうひとつの検索条件、「近似一致」(TRUE)の存在を。
※完全一致でのVLOOKUPの使い方は
【Excel】検索して表示する!VLOOKUP関数を使ってみようの回をご参考にどうぞ。
近似一致での検索の動き方
VLOOKUP関数は、検索値に指定した値と範囲の先頭列に入力された値を上から縦方向に照合していく仕組みですが、検索方法で近似一致を指定した場合は以下のような動きになります。
- 合致する値があればその行を参照する
- 合致する値がなければ値を超えない範疇での最大値が入っている行を参照する
仮に検索値を「12」とし、範囲の先頭列には「0」「10」「20」の3つの値が入力されていたとして、近似一致で検索した時に「12」がどのように行を参照してゆくかを見てみましょう。
つまり、この動きを利用すると、数値にある程度の幅を持たせた条件、例えば「〇点以上〇点未満ならBと表示したい」とか、「〇円以上〇円未満までは割引0%、〇円以上は割引10%と表示したい」など、「こっからここまでの範囲に当てはまるもの」という条件を設ける事ができるという事です。
近似一致で値を検索する
では、実際にどのような使い方をするか具体例を見ていきましょう。
こちらの表で、セルC3にVLOOKUP式を入れ、B3に入力した点数に応じてF列の判定記号×、△、〇、◎のいずれかを表示させるようにしたいと思います。各々の判定記号には赤字で記した点数の条件をつけるとして、範囲の先頭列になるE3~E6にはどのように数値を入れるのが良いでしょうか?
このような場合は、各判定に該当する点数の「最小値」を入力しておくのが正解です。この状態で近似一致(TRUE または 1)を指定すれば、それぞれの行に「入力されている値以上、次の行に入っている値未満」という条件が成立します。(最後の行は上限がありませんので「以上」だけになります)
検索値には現在「76」と入力されていますが、「80」までいくと値を超えてしまいますので、その一つ前の最大値である「60」の行を参照し、表示される判定記号は「△」になる、という事です。
ちなみにこれを完全一致(FALSE)でやるという事もできなくはないのですが、その場合は「範囲」に0点~100点までの各判定記号を1点刻みで用意しなければならず、現実問題あまり良いやり方とはいえません。
「一意の値を検索するなら完全一致」「値にふり幅を持たせて検索するなら近似一致」というように、用途に応じて上手に使い分けるようにしましょう。
「範囲」は必ず昇順に並べておくべし!
近似一致を使う時は、範囲の先頭列は昇順で並べておくのが鉄則です。
例えば、先の表の範囲を「昇順」ではなく「降順」にしてしまうと、範囲の先頭行にある「100」が検索値である「76」をすでにオーバーしているので、先頭行も踏めない、でも戻れる行もない・・・という事でエラーになってしまいます。
また、昇順も降順もないバラバラの状態で値が並んでいると、「値を超えない範疇での最大値」の判定を誤ってしまう場合があります。「近似一致は範囲昇順必須」と覚えておきましょう。
※完全一致で検索する時は、範囲の並び順は特に気にしなくて大丈夫です。