スプレッドシートの検索・参照系でもっともよく使われる関数のひとつ、VLOOKUP関数について、使い方と内部のしくみを解説します。草野球の成績管理表で「選手マスタ」から背番号・守備位置を取得する場面を例に、初心者向けに丁寧に説明します。
VLOOKUP関数とは
指定した検索値を、範囲の一番左の列から探し出し、そこから右方向に指定した列数だけずれた位置の値を返す関数です。成績管理表では「選手名から背番号を引く」「選手名から守備位置を引く」のように、別の表(マスタ)から情報を持ってきたい場面でよく使われます。
基本の書式はこうです。
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
「検索値」は探したいキーとなる値(選手名など)、「範囲」は検索対象の表全体、「列番号」は範囲の左端を1列目として何列目の値を取り出すか、「検索方法」は完全一致(FALSE)か近似一致(TRUE)かを指定します。
成績管理表での実例:選手マスタから背番号・守備位置を引く
大阪グーニーズのスプレッドシートには、選手名・背番号・守備位置をまとめた「選手マスタ」シートがあるとします。A列に選手名、B列に背番号、C列に守備位置が入っています。
| 選手名 | 背番号 | 守備位置 |
|---|---|---|
| SUZUKI | 7 | 中 |
| NAKATA | 3 | 一 |
| YAMAMOTO | 6 | 左 |
| … | … | … |
一方、「個人成績」シートのA列には選手名だけが入っており、背番号・守備位置は入力されていません。ここにVLOOKUPを使って、選手マスタから自動で引っ張ってきます。A2セルの選手名をもとに背番号を取得する式はこうなります。
=VLOOKUP(A2, 選手マスタ!A:C, 2, FALSE)
これで「選手マスタのA列からA2セルと同じ選手名を探し、そこから2列目(背番号)の値を返す」という計算が実行されます。守備位置を取得したい場合は、列番号の部分を3に変えるだけです。
=VLOOKUP(A2, 選手マスタ!A:C, 3, FALSE)
「個人成績」シートで、背番号を表示したいセル(例:B2セル)をクリックして選択します。
検索値としてA2セル(選手名)をクリックし、続けて選手マスタシートのA列からC列までをドラッグで範囲選択します。「選手マスタ!A:C」のように自動で入力されます。
背番号は範囲の2列目なので「2」、完全一致で探したいので「FALSE」を指定して式を閉じます。確定すると、すぐに背番号がセルに表示されます。
しくみを理解する:VLOOKUPは何をしているのか
VLOOKUP関数は、次の2ステップだけを行っています。
- ① 範囲の一番左の列を、上から順に検索値と照合していく(選手マスタのA列を上から1行ずつ見ていき、A2セルの選手名と一致する行を探す)
- ② 一致した行が見つかったら、そこから右方向に「列番号」で指定した分だけずれた値を返す(列番号2なら1つ右のB列、列番号3なら2つ右のC列)
「V」は縦(Vertical)を意味していて、検索対象の列を縦方向に探すことからこの名前がついています。また、4つ目の引数(検索方法)にFALSEを指定すると「完全に一致する行だけ」を探し、見つからなければ#N/Aエラーを返します。TRUEにすると近似一致になりますが、成績管理表のような名前検索ではFALSEを使うのが基本です。
よくあるミス:VLOOKUPで起きやすいエラー
VLOOKUPは「範囲の一番左の列」しか検索対象にできません。たとえば選手マスタが「背番号・選手名・守備位置」の順に並んでいる場合、選手名から検索することができず、正しい結果が返りません。検索したい列を範囲の左端に置くよう、表の並びを調整する必要があります。
検索方法を省略、またはTRUEにしてしまうと、完全一致ではなく近似一致で検索されます。選手マスタが選手名で並び替えられていない場合、意図しない選手の背番号が返ってきてしまうことがあります。名前や番号などのマスタ検索では、必ず第4引数に「FALSE」を指定しましょう。
- VLOOKUP関数は「範囲の左端列を検索し、右方向に指定列数ずらした値を返す」関数
- 検索したい列は必ず範囲の左端に置く必要がある(左端限定の制約)
- 成績管理表でのマスタ検索では、第4引数に「FALSE」を指定して完全一致で探すのが基本
次回予告
次回のテーマは「HLOOKUP関数」です。VLOOKUPの縦横の向きが逆になった関数を、年度を横に並べた表からの参照を例に解説していきます。
▶︎ 次回:HLOOKUP関数の使い方としくみ



コメント