「VLOOKUP関数の引数が覚えられない」「#N/Aエラーが出て困っている」「Excel 365のXLOOKUPとは何が違うのか」——そんな疑問をお持ちではないでしょうか。ExcelのVLOOKUP関数はIF関数と並ぶ最重要関数のひとつで、商品コードから名称を取得したり、社員番号から部署情報を抽出したりと、業務の自動化に欠かせないツールです。本記事ではVLOOKUP関数の基本構文から別シート参照・エラー対処・IFERROR関数との組み合わせ、さらにExcel 365で使えるXLOOKUP関数の活用方法まで、2026年最新版で体系的に解説します。MOS Excel 365試験の出題パターンも詳しく取り上げますので、資格取得を目指す方にもぜひお読みいただける内容です。
VLOOKUP関数とは何か(基本概念と3つのメリット)
VLOOKUPが解決する「手動検索」の問題
VLOOKUP関数は「Vertical LOOKUP(縦方向の検索)」の略で、指定した値を表の左端列から縦方向に検索し、対応する別の列の値を返す関数です。例えば商品コード「A001」を入力すると商品名「ノートPC」と単価「98,000円」が自動的に表示される——そのような仕組みをVLOOKUPで実現できます。手動検索との最大の違いは、参照元のテーブルが更新されると数式が自動で最新値を返す点です。商品リストが100行あっても1,000行あっても同じ数式で対応できます。
VLOOKUPを活用するメリットは3つあります。第一に、コード・番号・キーワードを入力するだけで対応するデータを瞬時に取得できるため、転記ミスや入力漏れを防げること。第二に、マスターデータ(商品リスト・社員情報・料金表)を一元管理してVLOOKUPで参照する設計にすると、マスター更新だけで全参照箇所が自動的に最新化されること。第三に、MOS Excel 365試験で全体問題の10~15%を占める重要分野であり、資格取得と実務効率化を同時に達成できることです。
VLOOKUP関数の基本構文(4つの引数)
VLOOKUP関数の構文は「=VLOOKUP(検索値, 範囲, 列番号, 検索方法)」です。4つの引数の意味を整理します。①「検索値」は表の左端列で探したいキーワードです。セル参照(A2など)でも直接値(”A001″など)でも構いません。②「範囲」は検索対象のテーブル全体を選択します。左端列が必ず検索値と照合する列になります。③「列番号」は範囲の左端から何列目の値を返すかを数値で指定します。範囲の1列目を1、2列目を2と数えます。④「検索方法」はFALSEまたは0で完全一致検索、TRUEまたは1で近似一致検索を指定します。多くの実務ではFALSE(完全一致)を使います。
具体的な例で確認します。A列に商品コード、B列に商品名、C列に単価が並ぶ表(A1:C100)から、E2セルに入力したコードをもとに商品名を取得するには「=VLOOKUP(E2,A:C,2,FALSE)」と書きます。単価を取得したい場合は「=VLOOKUP(E2,A:C,3,FALSE)」と列番号を3に変えるだけです。列番号の数え方を誤るとまったく関係ない列の値が返るため、範囲の左端から何列目かを必ず確認してください。
検索方法「FALSE(完全一致)」vs「TRUE(近似一致)」
第4引数の「検索方法」はFALSE(完全一致)とTRUE(近似一致)の2択です。実務でよく使うFALSEを指定すると、検索値と左端列が完全に一致した行だけを返します。一致する値がない場合は#N/Aエラーが返ります。商品コード・社員番号・顧客IDなど識別子を検索するときは必ずFALSEを使います。
TRUEは検索値以下の最大値を返す近似一致です。利用場面は累進料金表・成績区分テーブルなどで、テーブルの左端列が昇順に並んでいることが前提条件です。例えば評価点と成績区分の対応表(0→D、60→C、70→B、80→A、90→S)がある場合、「=VLOOKUP(点数,対応表,2,TRUE)」とすると点数に対応した成績区分が返ります。ただしTRUEはテーブルが昇順でないと誤った値を返すため、この前提を満たせない場合はIF関数のネストかIFS関数を使う方が安全です。引数を省略するとTRUEとみなされるため、意図せずTRUEになっていないか注意してください。
VLOOKUPの基本的な使い方(実践パターン)
商品コードから名称・単価を自動取得する
最も典型的な用途は受注表や見積書での商品マスター参照です。Sheet1の受注明細にSheet2の商品マスターを参照させる場合、受注明細のB列(商品名)に「=VLOOKUP(A2,商品マスター!A:C,2,FALSE)」、C列(単価)に「=VLOOKUP(A2,商品マスター!A:C,3,FALSE)」と入力します。A2に商品コードを入力するだけで商品名と単価が自動入力される仕組みです。別シートを参照するには「シート名!セル範囲」という書式を使います。シート名にスペースや記号が含まれる場合は「’商品 マスター’!A:C」のようにシングルクォーテーションで囲みます。
受注明細を下にコピーしてもA列の検索値は相対参照(A2→A3→A4…)で自動的に変わりますが、範囲「商品マスター!A:C」は変わってほしくないため絶対参照にします。「=VLOOKUP(A2,商品マスター!$A:$C,2,FALSE)」と$を付けると範囲が固定されます。列全体(A:C)を指定すると後からマスターに行を追加しても参照範囲に自動で含まれます。一方で非常に大きな表に列全体指定を使うと計算が遅くなる場合があるため、「$A$1:$C$1000」のように上限行を設定する運用も実務では見られます。
別シートの参照テーブルからデータを抽出する
テーブル範囲に「テーブル形式(Ctrl+T)」を適用すると、数式の可読性が上がり、行の追加・削除にも自動で追従します。テーブル名を「商品テーブル」とした場合、VLOOKUP式は「=VLOOKUP(A2,商品テーブル,2,FALSE)」と書けます。テーブルの列はテーブル名と列ヘッダーの組み合わせで「商品テーブル[商品名]」のように参照することもでき、列番号のハードコーディングが不要になります(ただしVLOOKUP構文では列番号指定が必要なため、構造化参照はMATCH関数との組み合わせで使います)。
MATCH関数を組み合わせると列番号をヘッダー名で動的に指定できます。「=VLOOKUP(A2,商品マスター!$A:$E,MATCH(“単価”,商品マスター!$1:$1,0),FALSE)」とすると、ヘッダー行(1行目)で”単価”という文字列が何列目にあるかをMATCHが求め、それをVLOOKUPの列番号として使います。列の順番が変わっても数式を修正せずに済むため、テーブル構造が変動しがちな長期運用の表に有効です。
複数条件でVLOOKUPを使う方法
VLOOKUPは左端1列でしか検索できませんが、複数条件の検索を実現するには補助列を使う方法が現実的です。例えば「地区」と「商品コード」の組み合わせで価格を検索したい場合、マスターシートにA列(地区)・B列(商品コード)・C列(価格)があるとします。A列に「=A2&B2」のような結合文字列の補助列を追加し、検索値側でも「=VLOOKUP(地区&商品コード,補助列を含む範囲,列番号,FALSE)」と連結した文字列で検索します。補助列の文字列がユニークになるよう、連結時に区切り文字(「_」など)を挟むと安全です。
Excel 365ではXLOOKUPやFILTER関数を使うと複数条件検索がより簡潔に書けます。VLOOKUPによる補助列方式はExcel 2019以前の環境でも使える点がメリットです。チームで古いExcelを使っているメンバーがいる場合は補助列VLOOKUPを、Excel 365統一環境ではXLOOKUPを使い分けるのが現実的な選択です。
VLOOKUPでよく発生するエラーと対処法
#N/Aエラーの原因と解決策
#N/Aエラーはテーブルの左端列に検索値が見つからない場合に返るエラーです。最も多い原因は①検索値とテーブル値でのデータ型の不一致、②全角・半角・スペースの混在、③検索値がテーブルの検索範囲外にある、の3つです。
データ型の不一致は特に数値と文字列の混在で起こります。セルの表示が同じ”1001″でも、片方が数値型・もう片方が文字列型だと一致しません。セルを選択したときに「数値の書式」ドロップダウンが「標準」または「数値」を示していれば数値型、「文字列」を示していれば文字列型です。VALUE関数で数値変換「=VLOOKUP(VALUE(A2),…)」またはTEXT関数で文字列変換「=VLOOKUP(TEXT(A2,”0″),…)」することで解消します。全角・半角の混在はASC関数(全角→半角変換)やTRIM関数(前後スペース除去)で正規化してから検索するのが確実です。
#REF!・#VALUE!エラーの解決策
#REF!エラーは列番号が範囲の列数を超えた場合に発生します。「=VLOOKUP(A2,B:D,5,FALSE)」ではB列からD列(3列)しかないのに5列目を指定しているためエラーになります。列番号を範囲内の値(1~3)に修正するか、範囲を拡張してください。参照範囲として列全体(A:C)ではなく特定のセル範囲($A$1:$C$100)を指定している場合、行の挿入・削除によって参照がずれて#REF!が出ることがあります。テーブル形式か列全体指定に切り替えると根本解決になります。
#VALUE!エラーは列番号に0以下や小数が指定された場合に発生します。MATCH関数と組み合わせている場合、MATCH関数自身が#N/Aを返してそれが列番号として使われることで#VALUE!になるケースがあります。MATCH関数の検索対象ヘッダー名とテーブルの実際のヘッダー名が一致しているか確認し、IFERROR(MATCH(…),1)のようにフォールバック値を設定してください。
IFERROR関数でエラーを非表示にする
IFERROR関数を使うとVLOOKUPのエラーを代替値に置き換えて表示できます。構文は「=IFERROR(値, エラーの場合の値)」です。「=IFERROR(VLOOKUP(A2,商品マスター!$A:$C,2,FALSE),”該当なし”)」とすると、検索値が見つからない場合に#N/Aではなく”該当なし”と表示されます。空白にしたい場合は「=IFERROR(VLOOKUP(A2,商品マスター!$A:$C,2,FALSE),””)」とします。
注意点は、IFERROR関数がすべてのエラーを同じ代替値で隠してしまうことです。本来検出すべきデータ入力ミスも見えなくなるリスクがあります。IFNA関数を使うと#N/Aエラーだけを捕捉し、それ以外の#REF!・#VALUE!などは表示させることができます。「=IFNA(VLOOKUP(A2,商品マスター!$A:$C,2,FALSE),”未登録”)」とすることで、テーブルに存在しない検索値のみ”未登録”と表示し、数式ミスによるエラーは目に見える形で残せます。運用フェーズでは#N/AをIFNAで処理し、その他のエラーは都度調査する運用が推奨です。
XLOOKUP関数の完全ガイド(Excel 365対応)
XLOOKUPが解決するVLOOKUPの3つの限界
XLOOKUP関数はExcel 365・Excel 2021以降で使える新世代の検索関数で、VLOOKUPの3つの限界を解消しています。第一の限界は「左方向に検索できない」ことです。VLOOKUPは検索列が必ず左端でなければならないため、検索値の列より左にある列の値を返せません。XLOOKUPでは検索列と返却列が独立しているため、どの方向にも検索できます。第二の限界は「列番号の変更が必要」な点です。VLOOKUPは列番号をハードコーディングするため、テーブルに列を挿入するたびに数式を修正する必要があります。XLOOKUPは返却範囲を直接指定するため、列の追加・削除に自動で追従します。第三の限界は「複数列を一度に返せない」ことで、XLOOKUPはスピル(溢れ出し)機能により複数列の値を1つの数式で返せます。
XLOOKUP関数の基本構文(6つの引数)
XLOOKUP関数の構文は「=XLOOKUP(検索値, 検索範囲, 返却範囲, [見つからない場合], [一致モード], [検索モード])」です。最初の3引数は必須、残り3つは省略可能です。①「検索値」は探したい値またはセル参照。②「検索範囲」は検索する1列(または1行)のセル範囲。③「返却範囲」は返したい値が入っている列(または行)のセル範囲。この3つを指定するだけで動作します。
省略可能な3引数の意味は次の通りです。④「見つからない場合」は検索値がない場合の代替値で、VLOOKUPでのIFERROR相当の処理を内包できます(例:”該当なし”)。⑤「一致モード」は0が完全一致(既定)、-1が完全一致または次に小さい値、1が完全一致または次に大きい値、2がワイルドカード一致です。⑥「検索モード」は1が先頭から検索(既定)、-1が末尾から検索、2が昇順バイナリ検索、-2が降順バイナリ検索です。VLOOKUPより引数が多いですが、引数④~⑥を省略すると「完全一致・先頭から検索」となりVLOOKUPのFALSE相当の動作になります。
XLOOKUPで左方向の検索・複数列の返却
左方向検索の例を示します。B列(商品コード)・A列(商品名)という順番でデータがある場合、B列で検索してA列の値を返すには「=XLOOKUP(E2,B:B,A:A,”該当なし”)」と書きます。検索範囲と返却範囲が独立しているため、左方向でも右方向でも自由に指定できます。VLOOKUPではテーブルの列順を変えるか補助列を追加しなければできなかった操作が、XLOOKUPでは1行で完結します。
複数列を一度に返すスピル機能も活用できます。「=XLOOKUP(E2,商品マスター!A:A,商品マスター!B:D,”該当なし”)」とすると、B列・C列・D列の3列分の値がF2・G2・H2に一度に展開されます(スピル)。VLOOKUPでは同じ処理に列数分の数式が必要でしたが、XLOOKUPなら1つの数式で済みます。スピルした範囲は「E2#」(スピル参照)で他の数式から参照できます。ただしスピル機能はExcel 365・Excel 2021以降限定であり、旧バージョンとのファイル共有時にはエラーになる点に注意してください。
【PR】MOS Excel 365 対策テキストはこちら
▶ Amazonで対策本を見る
※本記事はAmazonアソシエイトを含みます(PR)
VLOOKUP・XLOOKUP・INDEX+MATCH 機能比較表
| 比較項目 | VLOOKUP | XLOOKUP | INDEX+MATCH |
|---|---|---|---|
| 対応Excelバージョン | 全バージョン対応 | Excel 365・2021以降 | 全バージョン対応 |
| 左方向の検索 | ×不可 | ○可能 | ○可能 |
| 複数列の一括返却 | ×1列ずつ | ○スピルで一括 | ×1列ずつ |
| 列追加・削除への追従 | △列番号変更が必要 | ○自動追従 | ○自動追従 |
| エラー時の代替値設定 | IFERROR必要 | 第4引数で内包 | IFERROR必要 |
| ワイルドカード一致 | × | ○一致モード=2で対応 | △MATCH単体で対応 |
| 末尾からの検索 | × | ○検索モード=-1 | △工夫が必要 |
| 構文の複雑さ | 低(4引数) | 中(最大6引数) | 高(2関数の組み合わせ) |
| MOS試験での出題頻度 | 高(全バージョン共通) | 中(365専用) | 低(応用問題のみ) |
MOS Excel試験でのVLOOKUP・XLOOKUP出題パターン
MOS Excel 365試験での頻出タスク形式
MOS Excel 365試験においてVLOOKUP関数は全体問題の10~15%を占める最重要分野です。代表的な出題形式は「指定したセルにVLOOKUP関数を使って○○を取得する数式を入力してください」というタスクです。問題文には①検索値のセル番地、②参照する表の範囲、③返す列の意味(例:「2列目の商品名を返す」)、④完全一致か近似一致か、が明記されます。これらを問題文から正確に読み取って数式に変換する練習が必須です。
別シートや別ブックを参照するタスクも頻出です。「Sheet2のA1:D100を参照範囲として使ってください」という指示では「Sheet2!$A$1:$D$100」と正確に入力できるかが問われます。絶対参照($記号)の付け忘れは数式をコピーした際に範囲がずれてしまう典型的なミスです。試験では数式を入力後にオートフィルでコピーするタスクが多く、絶対参照を付け忘れると採点が「不正解」になります。
試験でよくある操作ミスと対策
MOS試験でのVLOOKUP関連ミスで最も多いのは「列番号の数え間違い」です。範囲の左端(検索列)を1として数えることを確認してください。例えば「=VLOOKUP(A2,$C:$F,3,FALSE)」の場合、C列が1・D列が2・E列が3・F列が4です。列アルファベット(D列だから4列目)と勘違いするミスが試験では頻発します。入力前に紙かメモに「参照範囲の1列目=C列」と書き出して確認する習慣をつけてください。
第4引数のFALSEを省略するミスも注意が必要です。省略するとTRUE(近似一致)が使われ、テーブルが昇順でなければ誤った値を返します。実務ではFALSEを常に明示する習慣をつけてください。またXLOOKUP関数では第3引数(返却範囲)に検索範囲と同じ行数・列数の範囲を指定する必要があります。検索範囲が100行なら返却範囲も100行でなければなりません。行数の不一致は#VALUE!エラーの原因になります。
MOS Excel試験でVLOOKUPを学ぶ推奨順序
MOS Excel試験でVLOOKUP関連スキルを習得する効率的な学習順序を示します。①VLOOKUPの基本(同シート・完全一致)→②別シート参照と絶対参照→③#N/Aエラーの発生条件と対処法(IFERROR/IFNA)→④近似一致(TRUE)の用途と条件→⑤XLOOKUP関数の基本(3引数)→⑥XLOOKUPの応用(複数列返却・左方向検索)の順が推奨です。①②を30回以上繰り返して体に染み込ませてから③に進み、各ステップを15~20回練習してください。模擬試験(FOM出版・日経BP等のMOS対策テキスト付属練習ファイル)で本番と同じ操作環境での練習が効果的です。
試験当日のポイントとして、数式入力前に必ず問題文を2回読んで引数を書き出すことを強く推奨します。「検索値:D2、範囲:Sheet2!$A$1:$C$50、返却列:3列目(単価)、一致方法:完全一致」のようにメモしてから数式を入力すると、引数の順番ミスや列番号の誤りを大幅に防げます。
VLOOKUPに関するよくある質問(FAQ)
Q. VLOOKUPで複数の結果を返すことはできますか?
通常のVLOOKUPは検索値に一致した最初の行の値しか返せません。同じ検索値が複数行ある場合に全件取得したい場合はExcel 365のFILTER関数を使います。「=FILTER(返却範囲,検索列=検索値,”該当なし”)」で一致した全行をスピルで返せます。旧バージョンの環境では補助列に行番号を組み合わせたINDEX+SMALL+IF方式の配列数式が使われますが、複雑なため実務ではExcel 365への移行を検討することを推奨します。
Q. VLOOKUPとINDEX+MATCHはどちらを使うべきですか?
Excel 365環境であればXLOOKUPが最もシンプルで機能も豊富なため第一選択です。Excel 2019以前の環境でVLOOKUPの限界(左方向検索不可・列番号変更問題)が問題になる場合はINDEX+MATCHの組み合わせを使います。INDEX+MATCHは「=INDEX(返却列,MATCH(検索値,検索列,0))」の構文で、どの方向でも検索でき列追加にも自動追従します。複雑さはVLOOKUPより高いですが、Excel 2019以前での左方向検索には現時点でINDEX+MATCHが唯一の現実的な解です。
Q. VLOOKUPで検索範囲に条件付き書式の色は関係しますか?
VLOOKUPの検索・返却はセルの値(文字列・数値)だけを扱い、セルの背景色やフォント色は一切影響しません。検索対象から特定の色のセルを除外したいという要件はVLOOKUPでは実現できません。色による絞り込みが必要な場合は、色の条件を値(フラグ列)として別途管理し、そのフラグをVLOOKUPの検索値に組み込む設計に変更することを検討してください。
Q. VLOOKUPで大文字・小文字を区別して検索できますか?
通常のVLOOKUPは大文字・小文字を区別しません(”ABC”と”abc”は同じとみなされます)。大文字・小文字を区別した完全一致が必要な場合は、EXACT関数とINDEX+MATCH関数を組み合わせた配列数式を使います。「=INDEX(返却列,MATCH(TRUE,EXACT(検索列,検索値),0))」をCtrl+Shift+Enterで入力します。Excel 365ではこの配列数式を通常のEnterで入力できます。実務で大文字・小文字が意味を持つ場面(シリアル番号・パスワードハッシュ等)に有効です。
Q. VLOOKUPとXLOOKUPのどちらがMOS試験に出題されますか?
MOS Excel 365試験ではVLOOKUPとXLOOKUPの両方が出題対象です。試験バージョンがExcel 365であれば、XLOOKUP関数のタスクも出題されます。出題比率はVLOOKUPの方が高い傾向がありますが、XLOOKUP専用のタスク(左方向検索・複数列返却)も試験範囲に含まれます。MOS Excel 365対策テキストでは両関数が収録されているため、どちらも確実に習得してください。MOS Excel 2019試験ではXLOOKUPは出題されず、VLOOKUPのみです。
【PR】Excel関数の解説書・MOS試験対策テキストはこちら
▶ Amazonで参考書を見る
※本記事はAmazonアソシエイトを含みます(PR)
