※本ページにはプロモーション(広告)が含まれています
Googleスプレッドシートで大量のデータを管理していると、「この商品コードに対応する商品名を別シートから引っ張ってきたい」「社員番号から部署名を自動表示したい」といった場面が頻繁に出てきます。そんなときに力を発揮するのがデータ検索・照合関数です。
2026年現在、Googleスプレッドシートには従来のVLOOKUPに加え、より強力なXLOOKUPやINDEX+MATCHも使えるようになっています。それぞれの使い分けを理解することで、データ管理の効率が大きく向上します。
この記事では、VLOOKUP・XLOOKUP・INDEX+MATCHの基本的な使い方から実用的な活用例、よくあるエラー(#N/A等)の対処法まで、スクリーンショットを交えてわかりやすく解説します。

この記事でわかること
- VLOOKUP関数の書き方と基本的な使い方
- XLOOKUPとVLOOKUPの違いと使い分け
- INDEX+MATCH関数で縦横両方向の検索を行う方法
- #N/Aなどエラーが出た場合の対処法
- 名簿照合・売上集計などの実用例
データ検索・照合関数の全体像
Googleスプレッドシートで使えるデータ検索・照合関数を整理しておきましょう。
| 関数名 | 検索方向 | 特徴 | 推奨度 |
|---|---|---|---|
| VLOOKUP | 縦方向(列) | シンプルで広く使われている。検索列は必ず左端 | ★★★ |
| HLOOKUP | 横方向(行) | VLOOKUPの横版。検索行は必ず最上行 | ★★ |
| XLOOKUP | 縦・横両方 | VLOOKUPの進化版。列順序の制約なし | ★★★★ |
| INDEX+MATCH | 縦・横両方 | 最も柔軟。大規模データに強い | ★★★★★ |
| MATCH | 縦・横どちらでも | 一致する位置(行番号/列番号)を返す | ★★★(単体よりINDEXと組み合わせ) |
VLOOKUP関数の基本と使い方
VLOOKUP関数の構文
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
| 引数 | 意味 | 例 |
|---|---|---|
| 検索値 | 探したい値(セル参照 또는 直接入力) | A2、”商品001″など |
| 範囲 | 検索するデータが入っている表全体 | Sheet2!A:C、$A$2:$C$100など |
| 列番号 | 範囲の何列目の値を返すか(左から数えた番号) | 2(2列目)、3(3列目)など |
| 検索の型 | FALSEまたは0 = 完全一致(推奨)/ TRUEまたは1 = 近似一致 | FALSE(通常はこれを指定) |
VLOOKUP関数の使用例
商品コードを検索して商品名と価格を表示する例を見てみましょう。
以下の商品マスターが「Sheet2」のA〜C列に入っているとします。
| A列(商品コード) | B列(商品名) | C列(価格) |
|---|---|---|
| P001 | ノートPC | 98000 |
| P002 | マウス | 2800 |
| P003 | キーボード | 5500 |
Sheet1のA2に「P002」と入力されているとき、B2に商品名を表示するには以下の式を使います。
=VLOOKUP(A2, Sheet2!A:C, 2, FALSE)
価格を表示するには列番号を3に変えます。
=VLOOKUP(A2, Sheet2!A:C, 3, FALSE)
VLOOKUPの制約・注意点
- 検索列は範囲の左端(第1列)でなければならない
- 左方向への検索はできない(右方向のみ)
- 列を追加・削除すると列番号がずれる
- 大規模データでは処理が遅くなることがある

XLOOKUP関数の基本と使い方
XLOOKUPはVLOOKUPの進化版で、2023年頃からGoogleスプレッドシートでも使えるようになりました。VLOOKUPの制約をほぼ解消した強力な関数です。
XLOOKUP関数の構文
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合の値], [一致モード], [検索モード])
| 引数 | 意味 |
|---|---|
| 検索値 | 探したい値 |
| 検索範囲 | 検索する列(または行)の範囲のみ指定 |
| 戻り範囲 | 返したい値が入っている列(または行)の範囲 |
| 見つからない場合の値(省略可) | 一致するデータがない場合に表示する値(例: “データなし”) |
| 一致モード(省略可) | 0=完全一致(デフォルト)、-1=完全一致または次に小さい、1=完全一致または次に大きい、2=ワイルドカード |
XLOOKUPの使用例
同じ商品マスター(Sheet2)から商品名を検索する場合、XLOOKUPはこのように書きます。
=XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B, "該当なし")
VLOOKUPと比べて列番号の指定が不要で、戻り値の列を直接指定できます。また、検索列より左の列を戻り値として指定することも可能です(VLOOKUPでは不可)。
VLOOKUPとXLOOKUPの比較
| 機能 | VLOOKUP | XLOOKUP |
|---|---|---|
| 左方向への検索 | ❌ 不可 | ✅ 可能 |
| 見つからない場合の処理 | ❌ 別途IFERROR必要 | ✅ 引数で直接指定可 |
| 列挿入時のずれ | ❌ 列番号がずれる | ✅ 影響なし |
| 複数列を一度に返す | ❌ 不可 | ✅ 可能 |
| 後ろから検索 | ❌ 不可 | ✅ 可能(検索モード=-1) |
| 古いスプレッドシートとの互換性 | ✅ 広く対応 | ⚠️ 比較的新しい機能 |
INDEX+MATCH関数で縦横両方向に検索する
INDEX+MATCHの組み合わせは、最も柔軟なデータ検索の方法です。大規模なデータや複雑な検索条件にも対応できます。
MATCH関数の構文
=MATCH(検索値, 検索範囲, [一致の型])
MATCH関数は、検索値が検索範囲の何番目に位置するかを数値で返します。INDEX関数と組み合わせることで強力な検索が可能になります。
INDEX関数の構文
=INDEX(配列, 行番号, [列番号])
INDEX関数は、指定した配列(範囲)の中から、指定した行・列番号の値を返します。
INDEX+MATCHの組み合わせ例
商品コードで商品名を検索するINDEX+MATCH式は以下の通りです。
=INDEX(Sheet2!B:B, MATCH(A2, Sheet2!A:A, 0))
VLOOKUPと同じ結果が得られますが、検索列(A列)が戻り値の列(B列)より左でも右でも構いません。
縦横両方向の2次元検索
INDEX+MATCHを2つ組み合わせることで、行と列の両方向から値を検索できます。これはVLOOKUPやXLOOKUP単体では難しい操作です。
=INDEX(データ範囲, MATCH(行検索値, 行ラベル列, 0), MATCH(列検索値, 列ラベル行, 0))
例えば、月別・商品別の売上マトリクスから「3月のP002の売上」を取り出す場合に活用できます。

エラーの対処法(#N/A・#REF!・#VALUE!)
VLOOKUP・XLOOKUPを使っていると様々なエラーが発生します。代表的なエラーの原因と対処法を解説します。
| エラー | 主な原因 | 対処法 |
|---|---|---|
| #N/A | 検索値が範囲内に見つからない | 検索値のスペース・大文字小文字・全半角を確認。IFERROR関数でエラー表示を変更する |
| #REF! | 列番号が範囲外(指定した列数より大きい) | VLOOKUPの列番号が範囲の列数を超えていないか確認する |
| #VALUE! | 引数の型が間違っている | 列番号に数値以外が入力されていないか確認する |
| 0が返る | 対応するセルが空白 | 参照先のデータが入力されているか確認する |
| 想定と違う値が返る | 近似一致(TRUE)が指定されている | VLOOKUPの第4引数を「FALSE」または「0」に変更する |
IFERROR関数でエラーを非表示にする
#N/Aなどのエラーを表示させず、代わりにわかりやすいメッセージを表示させたい場合はIFERROR関数で囲みます。
=IFERROR(VLOOKUP(A2, Sheet2!A:C, 2, FALSE), "該当なし")
この式では、VLOOKUPでエラーが発生した場合に「該当なし」と表示されます。XLOOKUPの場合は第4引数に直接指定できるためIFERROROは不要です。
実用例:名簿照合と売上集計
実用例1:参加者名簿の照合
イベント参加者リスト(A列:氏名)と登録者マスター(別シート:氏名・所属・連絡先)を照合し、参加者の所属を自動表示するケースです。
=IFERROR(VLOOKUP(A2, 登録者マスター!A:C, 2, FALSE), "未登録")
「未登録」と表示された行は登録者マスターにない人物として確認できます。
実用例2:注文データと商品マスターの結合
注文データに商品コードしかない場合、VLOOKUPで商品名・単価を自動入力し、金額を自動計算する構成が便利です。
商品名: =IFERROR(VLOOKUP(B2, 商品マスター!A:D, 2, FALSE), "不明")
単価: =IFERROR(VLOOKUP(B2, 商品マスター!A:D, 3, FALSE), 0)
金額: =C2 * D2 ← 数量 × 単価
実用例3:複数条件での照合(XLOOKUP + 連結)
「商品コード」と「月」の2つの条件を組み合わせて検索したい場合は、検索値を連結させる方法が有効です。
=XLOOKUP(A2&B2, 売上データ!A:A&売上データ!B:B, 売上データ!C:C, 0)
マスターシート側でもA列とB列を連結した検索キー列(例: P001_4月)を作成するか、配列数式として扱うことで複数条件照合が実現できます。
この記事に関連するおすすめ商品
Google Pixel Tablet WiFi 128GB Android タブレット
約79,800円〜
Googleスプレッドシートの関数操作が快適なGoogle純正タブレット
Dell 27インチ モニター フルHD IPS FHD
約25,000〜35,000円
Googleスプレッドシートで複数列の照合・参照作業を広く確認できる大画面モニター
ロジクール MX Master 3S ワイヤレスマウス 静音 高精度
約12,000〜18,000円
Googleスプレッドシートの大量データ操作が快適な高精度ワイヤレスマウス
※ 価格は変動する場合があります。最新価格はリンク先でご確認ください
よくある質問(FAQ)
Q1:VLOOKUPとXLOOKUPはどちらを使うべきですか?
新規で作成するシートであればXLOOKUPを推奨します。列順の制約がなく、見つからない場合の処理も簡単で、より直感的に書けます。ただし、古いバージョンのExcelや他者と共有するファイルではXLOOKUPが使えない場合があるため、互換性が重要な場合はVLOOKUPを使いましょう。
Q2:VLOOKUP で同じ検索値が複数ある場合、どの値が返されますか?
VLOOKUPは常に最初に見つかった行の値を返します。同じ検索値が複数ある場合に全件取得したい場合は、FILTERやQUERY関数が適切です。
Q3:別ファイル(スプレッドシート)のデータをVLOOKUPで参照できますか?
はい、IMPORTRANGE関数と組み合わせることで別ファイルのデータを参照できます。まずIMPORTRANGEで別シートのデータを取り込み、その範囲をVLOOKUPの参照先として使用します。ただし、最初にアクセス許可が必要です。
Q4:データ量が多いとVLOOKUPが重くなります。改善方法はありますか?
以下の方法で改善できます。まず参照範囲を列全体(A:C)ではなく具体的な範囲(A1:C1000)に絞ると計算が速くなります。また、INDEX+MATCHは大量データでVLOOKUPより高速です。データが固定なら値として貼り付けて数式を排除する方法も有効です。
Q5:スマートフォンのGoogleスプレッドシートアプリでもVLOOKUPは使えますか?
はい、AndroidおよびiOSのGoogleスプレッドシートアプリでもVLOOKUP・XLOOKUP・INDEX+MATCHはすべて使用できます。入力補完機能は若干PC版より少ないですが、既存の数式の確認・編集は問題なく行えます。
まとめ
Googleスプレッドシートのデータ検索・照合関数を使いこなすことで、手作業でのコピー&ペーストや目視確認が不要になり、作業効率が大幅に向上します。
今回のポイントをまとめます。
- VLOOKUP:シンプルで広く使われる。検索列は必ず左端
- XLOOKUP:VLOOKUPの進化版。列順の制約なし・エラー処理が簡単
- INDEX+MATCH:最も柔軟。縦横両方向の検索・大規模データに強い
- エラー(#N/A等)はIFERROR関数で見やすく処理できる
- 複数条件の照合はXLOOKUPの連結または配列数式で対応
まずはVLOOKUPの基本をマスターし、慣れてきたらXLOOKUPやINDEX+MATCHへとステップアップしていきましょう。データ量が増えるほど自動化の恩恵は大きくなります。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!