VLOOKUP関数の使い方|基本構文から応用まで解説
VLOOKUP関数は、Excelで最もよく使われる関数のひとつです。表の中から特定の値を検索し、対応するデータを取得する場面で活躍します。商品コードから商品名を引き当てたり、社員番号から部署名を取得したりと、実務で欠かせない関数です。
この記事では、VLOOKUP関数の基本的な使い方から、実務で役立つ応用テクニックまでを丁寧に解説します。
VLOOKUP関数の基本構文
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 検索値 | 検索したい値。セル参照や直接入力が可能 | 必須 |
| 範囲 | 検索対象のセル範囲。検索値は範囲の左端列に含まれる必要がある | 必須 |
| 列番号 | 範囲の左端から数えて何列目の値を返すかを指定する数値 | 必須 |
| 検索の型 | FALSEで完全一致、TRUEまたは省略で近似一致 | 任意 |
検索の型は、実務ではほとんどの場合FALSEを指定します。完全一致検索を行うことで、意図しないデータが返されるミスを防げます。
実践例1:商品コードから商品名を取得する
最も基本的な使い方です。商品マスタから商品コードに対応する商品名を取得します。
商品マスタ(A1:C5)が以下のように設定されているとします。
| 商品コード | 商品名 | 単価 |
|---|---|---|
| A001 | ノートPC | 89000 |
| A002 | マウス | 2500 |
| A003 | キーボード | 5800 |
| A004 | モニター | 35000 |
セルE2に商品コード「A002」が入力されている場合、以下の数式で商品名を取得できます。
=VLOOKUP(E2, A1:C5, 2, FALSE)
この数式は、E2の値(A002)をA列から検索し、見つかった行の2列目(商品名)を返します。結果は「マウス」になります。
実践例2:単価を取得して金額を計算する
VLOOKUP関数の結果を計算に利用する例です。商品コードから単価を取得し、数量と掛け合わせて金額を算出します。
=VLOOKUP(E2, A1:C5, 3, FALSE) * F2
この数式では、列番号を3に変更して単価列の値を取得し、F2セルの数量と掛け合わせています。商品コードを入力するだけで自動的に金額が計算されるため、入力ミスの削減につながります。
実践例3:別シートのデータを参照する
実務では、マスタデータが別シートに保存されていることが一般的です。シート名を指定してVLOOKUPを使う方法を解説します。
=VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE)
「商品マスタ」シートのA列からC列を範囲として指定しています。列全体を指定することで、データが追加されても数式を修正する必要がありません。
シート名にスペースが含まれる場合は、シート名をシングルクォーテーションで囲みます。
=VLOOKUP(A2, '商品 マスタ'!A:C, 2, FALSE)
実践例4:IFERROR関数と組み合わせてエラーを処理する
VLOOKUPで検索値が見つからない場合、#N/Aエラーが表示されます。これを防ぐために、IFERROR関数と組み合わせます。
=IFERROR(VLOOKUP(E2, A1:C5, 2, FALSE), "該当なし")
検索値が見つかった場合は通常通り結果を返し、見つからない場合は「該当なし」と表示します。エラー表示を防ぐことで、見た目がすっきりし、他の数式への影響も回避できます。
実践例5:ワイルドカードを使った部分一致検索
検索値にワイルドカード(*や?)を使うことで、部分一致検索が可能です。
=VLOOKUP("*PC*", A1:C5, 2, FALSE)
この数式は、商品名に「PC」を含むデータを検索します。アスタリスク(*)は任意の文字列を表します。
セル参照と組み合わせる場合は、以下のように記述します。
=VLOOKUP("*" & E2 & "*", A1:C5, 2, FALSE)
よくあるエラーと対処法
#N/Aエラー
最も多いエラーです。原因と対処法は以下の通りです。
- 検索値が範囲に存在しない: データの入力ミスや、全角・半角の違いを確認する
- 検索範囲の左端列に検索値がない: VLOOKUPは必ず範囲の左端列を検索するため、範囲の指定を見直す
- 検索の型の指定ミス: FALSEを指定し忘れていると近似一致になり、意図しない結果になる
#REFエラー
列番号が範囲の列数を超えている場合に発生します。たとえば、3列の範囲に対して列番号4を指定するとエラーになります。範囲と列番号の整合性を確認してください。
数値と文字列の不一致
検索値が数値なのに検索対象が文字列(またはその逆)の場合、一致しません。VALUE関数やTEXT関数で型を揃えてから検索してください。
VLOOKUP関数の制限事項
VLOOKUP関数には以下の制限があります。
- 左方向への検索ができない: 検索値は必ず範囲の左端列にある必要がある。左側のデータを取得したい場合はINDEX+MATCH関数やXLOOKUP関数を使用する
- 複数条件での検索ができない: 複数の条件で検索したい場合は、作業列を作成するか、INDEX+MATCH関数を使用する
- 列の挿入・削除に弱い: 列番号を数値で指定するため、列の追加や削除で結果がずれることがある。MATCH関数と組み合わせることで回避可能
Google スプレッドシートでの互換性
VLOOKUP関数はGoogle スプレッドシートでもほぼ同じ構文で使用できます。基本的な動作や引数は同一ですので、Excelで覚えた使い方がそのまま活かせます。ただし、Google スプレッドシートでは配列を返す拡張機能が追加されており、一部の動作が異なる場合があります。
まとめ
VLOOKUP関数は、検索値をもとにデータを取得する基本的な関数です。以下のポイントを押さえておきましょう。
- 検索の型は基本的にFALSEを指定する
- IFERROR関数と組み合わせてエラーを処理する
- 別シート参照ではシート名と範囲の指定方法に注意する
- 左方向への検索が必要な場合はXLOOKUPやINDEX+MATCHを検討する
VLOOKUPは非常に便利ですが、制限も理解した上で使いこなすことが大切です。より柔軟な検索が必要な場合は、XLOOKUP関数やINDEX+MATCH関数の記事もあわせてご覧ください。