shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】VLOOKUP関数の基本的な使い方とミス防止のポイント

ExcelのVLOOKUP関数は、表から特定の値を検索し、一致した値と同じ行にある値を取得する際にとても便利です。しかし、使い方を間違えると、思わぬ結果を引き起こすことがあるので、その基本的な使い方と計算ミスを防ぐポイントです。

内容:

VLOOKUP関数の基本的な使い方

VLOOKUP関数は、次の構文です。

=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
VLOOKUP 関数 - Microsoft サポート

具体的な使用例は下図のとおりです。

この事例では、セルG4、G5でVLOOKUP関数を使用しています。

(セルG4の場合)

=VLOOKUP(F4,$B$3:$D$8,2,FALSE)


セルF4の値を、$B$3:$D$8(下図でマスタ表に該当)の範囲にある左端列で検索し、

一致したら$B$3:$D$8の範囲の2列目(同じ行)の位置にある値を取得します。

検索の型はFALSEで”完全一致”を意味します。これにより、$B$3:$D$8の範囲の左端列F4の値と完全に一致する値を検索します。

なお、”範囲”は「絶対参照」による指定を基本とします。

事例では、「B3:D8」ではなく「$B$3:$D$8」のように"$"を含む参照です(参考:相対参照、絶対参照、複合参照を切り替える - Microsoft サポート )。

”検索値”は相対参照で指定しています。

=VLOOKUP(検索値, 範囲, 列番号, [検索の型])の構文で作成している

VLOOKUP関数の使用例(基本)

上記の事例で、$B$3:$D$8の範囲の3列目の値を取得したい場合の事例は以下です。

(セルG4の場合)

=VLOOKUP(F4,$B$3:$D$8,3,FALSE)

=VLOOKUP(F4,$B$3:$D$8,3,FALSE)と数式を変更

VLOOKUP関数の使用例(列番号の変更例)

以上が、VLOOKUP関数の基本的な使い方です。

ミス防止のポイント

計算ミスを防ぐポイント

VLOOKUP関数を使用する時、計算結果のミスを防ぐポイントは次のとおりです。

  1. 数式:=VLOOKUP(検索値, 範囲, 列番号, [検索の型]) は以下を基本とする。
    範囲は「絶対参照」で指定
    検索の型は「FALSE」で指定

  2. 範囲の左端列(検索の対象になる列)に、重複した値がないかを確認する
    重複した値がある場合、先に一致した値の行を取得し、意図しない計算結果になることがある。

VLOOKUP関数の活用場面により例外となるケースもありますが、計算ミスを防ぐためには上記を基本としておくのがお勧めです。

範囲を「絶対参照」で指定する理由

絶対参照は「$B$3:$D$8」のように"$"を含む参照方法です。

「絶対参照」を基本とする理由は、VLOOKUP関数の数式でよくあるミスの一つに「相対参照による範囲のズレ」があるためです。

VLOOKUP関数の数式をコピー、貼り付けをするとき、既定の「相対参照」では数式に指定した範囲もずれます。

一方で「絶対参照」であれば、数式をコピーした場合も常に同じ範囲を参照した数式が作成できます。

そして、「相対参照による範囲のズレ」は、一見正しく処理されていると誤認しやすいため、特に注意が必要です。

具体的には、次のようにセルG4にVLOOKUP関数の数式(範囲を「相対参照」で指定)を作成し、数式を他にコピーするケースです。

VLOOKUP関数の範囲を相対参照で指定しています

範囲を「相対参照」で指定したケース(非推奨)

このように「相対参照」を含む数式をコピーすると、範囲も相対位置で修正されるため、検索対象にしたい範囲がずれていきます(下図参照)。

セルG7は#N/Aでエラーとなっています。

セルG5、G6も一見正しく処理されているように見えますが、検索範囲が異なるために実は違う範囲の値ということもありえます。

検索対象に一致する値がなく、VLOOKUP関数の結果に#N/Aが混在した一覧になるような時など、範囲のズレによるミスを見逃すことがあります

よって、範囲を「絶対参照」で指定することを基本にします。

VLOOKUP関数の数式で指定した範囲が相対的な位置で作成され、ずれている

範囲を「相対参照」で指定したケース(範囲がずれている)

検索の型を「FALSE」で指定する理由

検索の型が「FALSE」とは前述のとおり”完全一致”を意味します。

「TRUE」は近似一致です。

「年齢」を「年代」に変換など、区間分け(ビニング)をする際などは便利です。

しかし、「TRUE」(近似一致)は、検索対象の表を並び替えしておくなども必要なため、活用方法を理解し、意図的に利用する場面だけ使用します。

検索の型を省略して何も指定しない場合、既定値は「TRUE」であるため、意識しておかないとミスの要因になります。

よって、検索の型を「FALSE」で意図的に指定することを基本にします。

shikumika.org

範囲の左端列に重複した値がある時の計算結果

VLOOKUP関数は、検索列で重複した値がある場合、先に一致した値の行を取得します。VLOOKUP関数の改良版であるXLOOKUP関数は、最後に一致した値も取得可能です。shikumika.org

以上、ExcelでVLOOKUP関数の基本的な使い方とミス防止のポイントでした。

VLOOKUP関数のエラー対応例

#N/Aのエラーの場合

#N/Aは、検索値が検索対象(範囲(左端列)に見つからない場合に発生します。

  • 実際に検索値が存在するか
  • 「相対参照」の数式で範囲がずれていないか

などを確認します。同じ数字なのにエラーとなる場合は以下をご覧ください。

shikumika.org

#REF!のエラーの場合

#REF!は、数式が無効なセルを参照している場合に表示されます。

  • 数式で参照する「範囲」を超えて列番号を指定していないか
  • 数式の作成後、検査値に指定していたセルを削除し、検査値自体が#REF!となっていないか

などを確認します。原因と対応の詳細は以下をご覧ください。

shikumika.org

VLOOKUP関数の活用ポイント

セル範囲の修正が多い場合の考え方です。

shikumika.org

右側から左側の値を取得したいときの事例です。

shikumika.org

VLOOKUPの改良版 XLOOKUP関数の特徴と活用事例

ExcelのXLOOKUP関数は、検索列と結果列の選択がしやすいなど便利な関数です。 

shikumika.org