エクセルで関数と言えば、皆さんは何を思い浮かべるでしょうか?
色々な関数がありますが、その中でも「VLOOKUP」関数は特に有名ですね!よく使う関数トップ3に入っている方も多いのではないでしょうか。
今回は有名な「VLOOKUP」関数の基本的な使い方と、他の関数と組み合わせてできる便利な方法も紹介いたします!
これまで以上に業務効率アップすること間違いなし!!多分!(笑)
ぜひ最後まで読んでいってみてください!
基本!完全一致で戻り値を取得
Excelで必須の関数と言ってもいいVLOOKUP関数ですが、何をするための関数かというと、「表の中から特定の値を検索し、対応する情報を返す」ことができる関数です。
「VLOOKUP」関数は下のように記述します。
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
各項目の説明は以下の通りです!
項目 | 説明 |
---|---|
検索値 | 検索したい値 |
範囲 | 検索する表の範囲 |
列番号 | 検索結果として返したい列番号 |
検索方法 | 完全一致もしくは近似一致を指定 |
今回は以下の表から、バナナの金額をセルE2に返したいとします。

今回の場合、
検索値 → バナナ(今回はセルD2を参照)
範囲 → セルA1:B7の範囲
列番号 → 2(範囲の2列目に金額があるため)
検索方法 → 0(もしくはFALSEでもOK)
と入力すれば、バナナの金額を表示することができました!

こちらがVLOOKUP関数の基本的な使い方になります!
「この社員番号の人は~」や「この人のテストの点数は~」など、表の中から対象のデータに紐づく情報を検索するときに重宝する関数となります。
VLOOKUP関数の検索方法については、検索したい対象データが決まっていますので、完全一致を使用するケースが多いと思います。
じゃあ近似一致はどういうときに使うの?という疑問もあると思いますので、次は近似一致を活用するケースについて紹介します!
近似一致を活用
近似一致は、範囲内にある検索値から紐づく情報を返すときに便利な検索方法です!
例えば、○%~○%内であれば□□を返す、といったような、達成率やテスト点数の評価などを表示する際に役立ちます!
今回は20%ずつで変わるランク表を用意し、70%のときのランクを取得したいと思います。
(70%なので、61%~80%にあるランクBを取得できればOK!)

基本的には完全一致で紹介したVLOOKUP関数を、この表に当てはめるとOKです!
ただ検索方法が0では、70%を指定したときにエラー値が返されてしまいます。
そのため、今回の場合は
検索値 → 70%
範囲 → セルA3:D7の範囲
列番号 → 4(範囲の4列目にランクがあるため)
検索方法 → 1(もしくはTRUEでもOK)
と入力しました!すると、、、

70%なので、61%~80%ラインにあるランクBを取得することができました!
このように、「〇〇以上であれば□□」と表現したい時に近似一致を使うと便利です!
ただ検索する列が昇順に並んでいる必要があるため、その点は注意されてください。
他の関数との組み合わせ技
上記では、VLOOKUP関数の基本的な使い方を紹介しました!
VLOOKUP関数だけでも便利な関数ですが、他のエクセル関数と組み合わせることで、もっと便利に使うことができます!
VLOOKUP × IFERROR:エラー回避でスマートに!
検索値が存在しない場合、下の図のように、エラー値「#N/A」が表示されます。
(N/AはNot Applicable → 日本語で言うと「該当なし」を意味します)

そのままでもいいのですが、資料やレポートなど人に見せる場合は見た目を整えるとグッドです!
今回はエラー値が発生した場合、「該当なし」と表示されるようにするため、「IFERROR」関数を使用します。
「IFERROR」関数は下のように記述します。
=IFERROR(値,エラーの場合の値)
今回の場合、
値の部分 → VLOOKUP関数部分を入力
エラーの場合の値 → ”該当なし”
と入力すれば、エラーが発生した場合、下のように該当なしと表示することができるようになります!

該当なしの部分は好きな文字に変更できたり、空欄表示にすることも可能です。
都度表示させたい内容にアレンジしてみてください!
VLOOKUP × MATCH:列番号を自動化!
VLOOKUP関数は取得したい列番号を指定することで、下のように値を返すことができます。

ただ検索する範囲に列が追加されるとどうなるでしょう?(今回は2列目に種類を追加しました。)
なんと!下のように列番号がずれてしまうため、返したい値が表示されなくなりました。。

こういうケースってよくあると思います。あとは項目名が変わったりとか。。。
こういう時は、返したい列の項目名と連動させておくと便利です!
それを実現するには、MATCH関数を組み合わせて、列番号の取得を自動化すると便利です!
MATCH関数は下のように記述します。
=MATCH(検査値,検査範囲,[照合の型])
今回の場合、
検査値 → 表示したい列の項目名 (今回は金額)
検査範囲 → 表示したい列の項目がある範囲
照合の型 → 0 (0を指定することで、検査値を一致する最初の値を指定できます)
と入力すれば、列項目と連動し、列番号を自動取得することができるようになります!

検索値は直接”金額”と入力して指定するも可能です!
列が増えたり、項目名が変わっているってあるあるですよね。。そういうときに大活躍します!
VLOOKUP × CHOOSE:左側の値も参照できる裏ワザ
かなり便利なVLOOKUPですが、唯一の弱点(?)ともいえるのが、検索値から右の範囲しか指定できないことです。
検索値の左側に返したい値がある場合、「INDEX」×「MATCH」関数を使用するか、「XLOOKUP」関数を使用することで解消できますが、実はVLOOKUPでも!CHOOSE関数と組み合わせることで、左側の値を返すことができちゃいます!
先ほどの表を並び替えしました。
検索値は品名、返したい値を金額だとすると、VLOOKUP関数のままでは検索値がA1:A7範囲にないため、当然エラーとして返ってきてしまいます。。

じゃあXLOOKUP関数か、INDEX×MATCH関数の組み合わせで対応しよう!でもいいのですが、どうしてもVLOOKUPで乗り越えたい時ってありますよね!(私だけ?)
そんな願望(?)をかなえてくれるのが、CHOOSE関数との組み合わせです!
CHOOSE関数は下のように記述します。
=CHOOSE(インデックス,値1,値2,・・・)
今回の場合、
インデックス → 配列にして、複数列の仮想テーブルを作成
値1,2,3 → 仮想テーブルの並び替えを指定
とすることで、並び替えした仮想テーブルを作成し、金額を返すことができました!

配列?仮想テーブル? 何それ、わかんない。。と思った方!ちょっと待った!!
CHOOSE関数が何をやっているか、できるだけ分かりやすく紹介していきますので、もう少々お付き合いください!
配列とは?
配列とは、複数の値を1つの単位としてまとめて扱う機能のことです。
エクセルでは数式やVBAなどの処理効率化によく使われるもので、{}記号で表現されています。
今回記述した数式は以下の通り。
CHOOSE({1,2,3},C1:C7,B1:B7,A1:A7)
上の記述を解説すると、値1(C1:C7)、値2(B1:B7)、値1(A1:A7)を一つの単位として扱いますよ~ということになります。
つまり1列目に値1(C1:C7)、2列目に値2(B1:B7)、3列目に値1(A1:A7)となる仮想のテーブルを作りますよ~と宣言している数式となります!
実際の表と、CHOOSE関数部分のみの場合、どう違うのかを比較してみました!

CHOOSE関数で作成された表を見てみると、元々の表C列→仮想テーブルの1列目になっていることが確認できましたね!
そのため、ちゃんと検索範囲の左側が品名とマッチングでき、3列目の金額を返すことができた!ということになります!
ちなみに配列を使わなかった場合は、下のようにインデックスで指定した値しか表示されないため、範囲を指定したい場合は配列を使う必要があるということになります。
(インデックスが1となっているため、値1であるC1:C7しか表示されない)

VLOOKUPとCHOOSEの組み合わせで、無事に左側の値も検索することができました!
便利な組み合わせなので、ぜひ活用してみてください!
今回の内容が少しでも参考になれば幸いです。
ご覧いただき、ありがとうございました!
コメント