こんにちは、エドです!
VlookUP関数はもう色々な解説が出そろっています。
いまさら何を解説するんだという方もいるかもしれませんが、VLOOKUP関数はネットで調べても基本的な部分しか教えてくれません。
まだまだ詳しく知らないよという方も、基本的な使い方をマスターしたぞ!という方も満足する「他では見れない事例集付き」の解説です!
ここではエクセルではなくGoogleスプレッドシートをメインとして解説をしています。ですがそのままエクセルで使えることも多いので、普段エクセルしか使わない方も参考になると思います。
すぐ実例が見たい方は目次から飛んでくださいね。
VLOOKUP関数とは?(Googleスプレッドシート)
VLOOPUP関数は「”キー”となる値をもとに表からデータを参照し、それと同じ行にある別な列の値を取得」します。
下図では「ピーマン」をキーに、商品リストを見に行きます。
その後「ピーマンと同じ行の2番目の値を取得する」というように指定しています。
データを別に持っておき、他の表などでデータの値を参照して持ってくるイメージです。
別にデータを持っておくので間違えて書き換えてしまうこともなくなり、データがどこかに存在すればいつでもその情報を引き出すことができるので、多種多様な場面で使えるエース級の関数です。
VLOOKUP関数の使い方
基本構文は下記の通りです。
=VLOOKUP(検索値, 範囲, 列番号, 検索の型)
わかりにくいのでわかりやすく書くと
=VLOOKUP ( {キーとなる値} , {参照する表} , {何番目の値を取得するか} , {見つからない場合の動き} )
となります。見つからない場合の動きはわかりにくいので後述します。とりあえずこの部分は"false"と書いておけばいいです。
{キーとなる値} :この文字をもとに表を参照します
{参照する表} :探しに行く表を範囲で指定します
{何番目の値を取得するか} :表の左端を1として、何番目の値を取得するか
{見つからない場合の動き} :false ※意味は否定、~しないという意味
先ほどの表を例にしてみましょう
VLOOKUPを書く場所は「C3」です。ここのセルに以下のように記載します。
=VLOOKUP ( B3 , B6 : C12 , 2 , false )
日本語で書くと「B3の値をもとにB6:C12の表を見に行って、見つかったら2番目の列の値を持ってきて。見つからない場合はよけないことしないで」となります。
値が見つからない場合
参照元のキーが表にあればよいですが、なかった場合に初めて「検索の型(見つからなかった場合の動き)」が動きます。
この検索の型は「true」と「false」のどちらかを書きます。*1
falseの場合、一致するものがなければエラーを返します。
trueの場合、一番近い値(近似値)を取得します。
わかりにくいですが、キーが350の場合、表のなかの350を超えない最大値を近似値として取得します。非常にわかりにくいうえ、予期せぬデータが取得されることもあるのでtrueは滅多に使用されません。
実際に使ってみる
①まずキーとなる値を指定する+カンマ(,)
②次に参照する表を指定する+カンマ(,)
③取り出す列番号を指定する
④最後にFalseを記入
別なシートにある表を参照する場合
参照する表が別なシートにある場合、表の指定にひと工夫必要です。
=VLOOKUP(検索値, 'シート名'!範囲, 列番号, 検索の型)
→「 'シート名'! 」を付けます。シート名をシングルコーテーション「'」で囲み、ビックリマークを後ろにつけます。
例)
=VLOOKUP ( B3 , 'シート1'!B6 : C12 , 2 , false )
実例集
ここからは実例をあげながら解説していきます。
後半につれマニアックになっていくのでマニアな方は後半から参照してみてください。
①キーが一番左にない場合
キーが表の2番目にある場合は、参照する表を2番目の列から指定すればよいです
開始位置が「C6」から始まっていることに注意してください。
②複数の行からそれぞれ表の値を取得する場合
参照するテーブルはすべて同じですが、キーの値だけ各行ごとに変えています
複数行で同じ表を参照する場合、行列を固定するのが便利です。*2
C9:D15といった指定の前に「$」を付けることで、コピーしても列や行が勝手にずれなくなります。関数のC9:D15の部分にカーソルを当てて、F4を押すと$を挿入してくれます。手作業でも可能です。
③キーの値に文字を追加して検索したい場合
実は検索値(キー)の文字は追加したり関数を書いたりができます。
上記では「ANM-332」という商品コードですが、参照する表の商品コードには「-OK」という文字が必ず最後についています。
この場合「検索値&”文字”」といった形でも検索することができます。
④VLOOKUPで値がなくエラーになった場合にエラーを表示させない
VLOOKUPは参照先の表に値がない場合はエラー(#N/A)になります。
普段使いなら気にならないかもしれませんが、ビジネスで使用する場合は悪目立ちしてしまいます。
こんな時はIferror関数で囲ってあげると効果的です。
=IFERROR ( VLOOKUP(検索値, 'シート名'!範囲, 列番号, 検索の型), エラーの場合の値)
IFERROR関数は、エラーの場合に特定の値を返す関数です。
= iferror ( エラー判定するセル , エラー時の値 )
という構成になっており、エラー時の値は省略できます。省略時は空白。
⑤VLOOKUP関数とArrayFormula関数と組み合わせ(スプレッドシート限定)
一気にマニア度が上がります。例えば1000行の表で1つ1つVLOOKUP関数をコピーするのは格好が悪いですね。実際に間違って途中の行を削除してしまった等のミスもよくあります。こんなときはArrayformula関数と組み合わせてみましょう。
※Arrayformula関数の説明はここでは省きます。詳しく知りたい方は
Arrayformula関数とは?便利な使い方や実例も!(Googleスプレッドシート) - 初心者脱出!SEO情報ブログ
を参照してくださいね
Arrayformula関数と組み合わせると、販売リストの行数がどれだけあっても関数は1セルに書くだけで全部のセルに値が入ります。
VLOOKUP関数を毎回コピーする煩わしさから解放されるとともに、ミスも減ります。
=arrayformula(VLOOKUP(B4,C9:F15,2,false))
下図ではArrayformula関数がD4セルに入っています。D5セルには¥1,600と入っていますが、これは自動で出力されています。セルが何万行でも書く関数はひとつだけ。
⑥1つのVLOOKUP関数で複数列をまとめて返す(スプレッドシート限定)
Arrayformula関数と組み合わせた時限定ですが、1つのVLOOKUP関数で複数列をまとめて取得することもできます。
普通は下図のように、販売リストの単価、商品名、備考の3つのデータを取得したい場合、3列ともVLOOKUP関数が必要です。
しかしArrayformula関数を組み合わせると・・・
C4セル一つ入力するだけで、D4、E4列のデータをすべて一度に取得できます。
=arrayformula(VLOOKUP(B4,C9:F15,{2,3,4},false))
ちなみに上記の例では、C5、C6にもVLOOK関数が必要です。しかし行も組み合わせることができるので、C4セルに1つ関数を書くだけで、C4~E6すべてに値を入れることができます。
まとめ
いかがだったでしょうか?
VLOOKUP関数はメジャーになって多くの人が使えるようになった関数ではありますが、まだまだポテンシャルがあることがわかってもらえたと思います。
私は本職がSEOコンサルタントなのですが、この関数を覚えたことによって数倍速くレポート作成ができるようになっています。
他にも「VLOOKUPで完全なあいまい検索」「VLOOKUPとQUERY関数の組み合わせ」「VLOOKUPで検索値の列より左に取得したい値がある場合」など面白い工夫ができます!
要望があれば続編も作成してみるので期待してくださいね。