「この商品IDの商品名なんだっけ…?」
「大量の顧客リストから、特定の会社の担当者を探し出したい…」
スプレッドシートでデータを管理していると、このような「特定のデータを探し出す」作業が頻繁に発生します。データが少なければ目視でも探せますが、数百、数千行にもなると、時間がかかるだけでなく、ミスも起こりがちです。
そんなデータ検索作業を自動化し、業務効率を劇的に向上させてくれるのが、VLOOKUP、HLOOKUP、XLOOKUPといった「LOOKUP(ルックアップ)系関数」です。
これらの関数を使えば、手作業での面倒な参照作業がなくなり、より創造的な業務に集中できるようになります。
本記事では、スプレッドシート関数初心者でも理解できるよう、
以下の3つの関数について、基礎から実践的な使い方を、具体的な業務シーンを想定した例と共に解説します。
- VLOOKUP関数:縦方向のリストからデータを検索する、最もポピュラーな関数
- HLOOKUP関数:横方向のリストからデータを検索する関数
- XLOOKUP関数:VLOOKUPとHLOOKUPの弱点を克服した、便利な検索関数
結論から言うと、これから新しく覚えるのであれば「XLOOKUP関数」のみで十分です。この記事を読めば、その理由も明確に理解できるでしょう。
データ参照の基本をマスターして、日々の業務をスマートに進めていきましょう!
LOOKUP系関数とは?
まず、「LOOKUP系関数」が一体何をしてくれるのか、その基本を掴みましょう。
一言でいうと、LOOKUP系関数は
「データリストの中から、指定した条件(キー)に一致するデータを探して、取り出してくれる関数」です。
例えば、以下のような「商品リスト」があったとします。

このリストから「商品ID:S-003」の「商品名」と「単価」を知りたい場合、LOOKUP系関数を使えば、商品IDを指定するだけで「ビジネスリュック」や「8500」という値を自動で取得できます。
今回ご紹介する3つの関数には、それぞれデータの探し方に特徴があります。
- VLOOKUP:Vertical(垂直)の略。縦長の表(列方向にデータが並んでいる表)の検索が得意。
- HLOOKUP:Horizontal(水平)の略。横長の表(行方向にデータが並んでいる表)の検索が得意。
- XLOOKUP:VとHの機能を含み、さらに弱点を克服した万能型。縦横どちらの検索も可能。
では、それぞれの関数の具体的な使い方を、最も基本的なVLOOKUPから見ていきましょう。
【基本】VLOOKUP関数の使い方
VLOOKUP関数は、LOOKUP系関数の中で最も有名で、多くのシートで利用されている関数です。まずはこの関数の仕組みを理解することが、データ参照の第一歩となります。
VLOOKUP関数の構文
VLOOKUP関数は、4つの情報(引数)を指定して使います。
=VLOOKUP(
検索キー,
範囲,
指数,
[並べ替え済み]
)
少し難しく感じるかもしれませんが、一つひとつの意味はシンプルです。
- 検索キー:「何を探したいか」を指定します。検索の“手がかり”となる値や、その値が入力されたセルを指定します。(例:「S-003」)
- 範囲:「どこを探すか」を指定します。検索キーが含まれる列から、取り出したいデータが含まれる列まで、表全体の範囲を選択します。(例:商品リスト全体のA列からC列)
- 指数:「どのデータを取り出したいか」を指定します。範囲の中で、取り出したいデータが左から何番目の列にあるかを数値で指定します。(例:商品名なら「2」、単価なら「3」)
- 並べ替え済み(省略可能):検索の一致方法を指定します。実務では、特定の情報を正確に探す「完全一致」が求められるため、基本的にFALSEを指定します。
- TRUE(近似一致): 検索キーと完全に一致する値がない場合、検索キー以下の最も近い値を探します。このオプションを使うには、検索範囲の先頭列が昇順(小さい順)に並べ替えられている必要があります。
- FALSE(完全一致): 検索キーと完全に一致する値だけを探します。
【ポイント】なぜ実務では「FALSE」が基本なのか?
TRUE(近似一致)は、料金テーブルから段階的な割引率を求めるといった特殊なケースで使われますが、意図しない検索結果を招くリスクがあります。
一方、ビジネスシーンで求められるデータ検索の多くは「商品IDに完全一致する商品名」のように、特定の情報を正確に探し出すことです。
そのため、確実な「完全一致」であるFALSEを指定するのが、ミスを防ぐための定石となっています。
実践!VLOOKUP関数で商品名を検索する
それでは、先ほどの「商品リスト」を使って、実際にVLOOKUP関数を組んでみましょう。
別のシートに商品IDを入力したら、対応する商品名と単価が自動で表示されるようにします。

商品名を表示させる(B2セル)
=VLOOKUP(
A2,
'商品リスト'!A:C,
2,
FALSE
)
- 検索キー:A2(「S-003」が入力されたセル)
- 範囲:’商品リスト’!A:C(「商品リスト」シートのA列からC列まで)
- 指数:2(範囲内で左から2番目の「商品名」列を取得したい)
- 並べ替え済み:FALSE(「S-003」と完全に一致するものを探す)

単価を表示させる(C2セル)
=VLOOKUP(
A2,
商品リスト!A:C,
3,
FALSE
)
- 指数が3に変わっただけです。範囲内で左から3番目の「単価」列を取得します。
このように、一度数式を組んでしまえば、A2セルの商品IDを「S-001」や「S-005」に変えるだけで、商品名と単価も自動で切り替わります。
VLOOKUP関数の注意点と弱点
非常に便利なVLOOKUPですが、実務で使う上で知っておくべき重要な弱点があります。
- 検索キーは範囲の「左端」にある必要がある
VLOOKUP最大の制約です。検索キー(例:商品ID)は、指定した範囲の一番左の列になければ検索できません。「商品名」から「商品ID」を探す、といった逆引きはできないのです。 - 列の挿入・削除に弱い
指数(列番号)を直接指定するため、元の表の構成が変わると、ずれてしまいます。例えば、商品リストのB列とC列の間に「カテゴリ」列を挿入すると、単価は4列目になるため、単価を取得していた数式の指数を3から4に修正しなければなりません。 - エラー処理が面倒
検索キーに該当するデータが見つからなかった場合、#N/A というエラーが表示されます。これを「該当なし」のような分かりやすい表示に変えるには、=IFERROR(VLOOKUP(…), “該当なし”) のように、IFERROR関数を別途組み合わせる必要があります。
【応用】MATCH関数を組み合わせて弱点を補う
VLOOKUPの弱点である「列の挿入・削除に弱い」点は、MATCH関数を組み合わせることで解決できます。
MATCH関数は、MATCH(検索キー, 範囲, [検索の種類]) のように使い、指定した範囲の中から検索キーが「何番目にあるか」を数値で返してくれる関数です。
これをVLOOKUPの指数の部分に応用します。

=VLOOKUP(
A2,
'商品リスト'!A:C,
MATCH("単価", '商品リスト'!A1:C1, 0),
FALSE
)
- MATCH(“単価”, 商品リスト!A1:C1, 0) の部分が、「商品リスト」シートの1行目(A1~C1)の中から「単価」という文字列を探し、その位置(この場合は3)を返します。
- これにより、VLOOKUPの指数を「3」と直接入力する代わりに、MATCH関数で動的に取得できます。
この方法を使えば、元の表の列の順番が変わっても、数式がヘッダー名(項目名)を基準に正しい列を探してくれるため、メンテナンス性が格段に向上します。
さらにVLOOKUP関数の弱点を解決できるのがXLOOKUP関数なのですが、その前に、VLOOKUPの兄弟分であるHLOOKUP関数も見ておきましょう。
【基本】HLOOKUP関数の使い方
HLOOKUP関数は、VLOOKUPの水平(Horizontal)版です。
データの項目が縦(列)に並んでいるのではなく、横(行)に並んでいる表からデータを検索する際に使用します。

このような形式の表は稀ですが、VLOOKUPとの違いを理解するために仕組みを知っておきましょう。
HLOOKUP関数の構文
構文はVLOOKUPとほぼ同じです。
=HLOOKUP(
検索キー,
範囲,
指数,
[並べ替え済み]
)
VLOOKUPとの違いは「指数」の考え方だけです。
- VLOOKUPの指数:範囲内で何列目か
- HLOOKUPの指数:範囲内で何行目か
実践!HLOOKUP関数で月別売上を検索する
上記の月別売上データから、「5月」の「商品B」の売上を取得してみましょう。

=HLOOKUP(
"商品B",
A1:C5,
3,
FALSE
)
- 検索キー:”商品B”
- 範囲:A1:C5(表全体)
- 指数:3(範囲内で上から3行目にある「5月」のデータを取得したい)
- 並べ替え済み:FALSE
HLOOKUPもVLOOKUPと同様に、検索キーが範囲の「一番上の行」になければならない、行の挿入・削除に弱い、という弱点を持っています。
【推奨】XLOOKUP関数の使い方
最後に、VLOOKUPとHLOOKUPの弱点を克服した、XLOOKUP関数を紹介します。
この関数を覚えておくと、多くの検索業務に柔軟に対応できるようになります。
XLOOKUP関数のメリット
- 検索範囲と戻り範囲が自由:検索キーが表の左端や上端にある必要がありません。どの列を検索して、どの列のデータを返すかを自由に指定できます。
- 列や行の挿入・削除に強い:列番号ではなく、列そのものを範囲として指定するため、表の構成が変わっても数式が壊れません。
- デフォルトが「完全一致」:VLOOKUPのFALSEのようなおまじないが不要で、シンプルに記述できます。
- エラー処理が簡単:データが見つからなかった場合に表示する値を、IFERROR関数を組み合わせることなく、XLOOKUP関数の中だけで指定できます。
- 縦横どちらも検索可能:HLOOKUPの役割も果たせます。
XLOOKUP関数の構文
VLOOKUPより引数は多いですが、必須なのは最初の3つだけです。
=XLOOKUP(
検索キー,
検索範囲,
結果範囲,
[見つからない場合の値],
[一致モード],
[検索モード]
)
- 検索キー:「何を探したいか」(VLOOKUPと同じ)
- 検索範囲:「検索キーをどの列(または行)で探すか」を指定します。VLOOKUPのように表全体ではなく、検索キーが含まれる1列(または1行)だけを指定します。
- 結果範囲:「どの列(または行)のデータを取り出したいか」を指定します。取り出したいデータが含まれる1列(または1行)だけを指定します。
この「検索範囲」と「結果範囲」を別々に指定できる点が、XLOOKUPが柔軟である最大の理由です。
実践例1:VLOOKUPの弱点を克服(氏名から社員番号を検索)
VLOOKUPでは不可能だった「検索キーより左側の列のデータを取得する」例を見てみましょう。
VLOOKUP関数でも使用した商品リストから、「商品名」をキーに「商品ID」を検索します。

=XLOOKUP(
B2,
'商品リスト'!B:B,
'商品リスト'!A:A
)
- 検索キー:B2(「ビジネスリュック」が入力されたセル)
- 検索範囲:’商品リスト’!B:B(「商品リスト」シートの商品名が入力されているB列全体)
- 結果範囲:’商品リスト’!A:A(取得したい商品IDが入力されている、「商品リスト」シートのA列全体)
このように、検索範囲(B列)の左側にある結果範囲(A列)のデータを取得できました。
実践例2:エラー処理も関数内で完結
もしリストにない名前を検索した場合、VLOOKUPでは「#N/A」というエラーが表示されますが、XLOOKUPなら分かりやすいメッセージを表示できます。

=XLOOKUP(
B3,
'商品リスト'!B:B,
'商品リスト'!A:A,
"存在しない商品"
)
- 4番目の引数「見つからない場合の値」に”存在しない商品”と指定するだけで、エラー表示を回避し、任意のテキストを表示できます。IFERROR関数を使うよりずっとスマートです。
実践例3:横方向の検索(HLOOKUPの代替)
XLOOKUPは横方向の検索も可能です。HLOOKUPで使った月別売上データで試してみましょう。

=XLOOKUP(
"商品B",
A1:C1,
A3:C3
)
- 検索キー:”商品B”
- 検索範囲:A1:C1(商品名が入力されている1行目)
- 結果範囲:A3:C3(取得したい5月のデータが入力されている3行目)
このように、XLOOKUPは縦横を意識することなく、同じ考え方でデータを検索できます。
VLOOKUP・HLOOKUP・XLOOKUPの特徴まとめ
最後に、3つの関数の特徴を整理します。
関数名 | メリット | デメリット・注意点 |
VLOOKUP | ・最も有名で広く使われている ・縦長の表の検索 | ・検索キーが範囲の左端にある必要がある ・列の挿入/削除に弱い ・エラー処理にはIFERRORが必要 |
HLOOKUP | ・横長の表を検索できる | ・検索キーが範囲の上端にある必要がある ・行の挿入/削除に弱い ・使われる場面が限定的 |
XLOOKUP | ・V/HLOOKUPの弱点をすべて克服 ・検索キーの位置が自由 ・列/行の挿入/削除に強い ・エラー処理が関数内で完結 ・縦横どちらも検索可能 | ・比較的新しい関数のため、古いバージョンのExcelでは使えない場合がある (Googleスプレッドシートでは問題なく利用可能) |
結論:これから新規作成、既存シートを更新するなら、XLOOKUPを使おう!
まとめ
今回は、スプレッドシートにおけるデータ検索の必須スキルであるVLOOKUP、HLOOKUP、そしてXLOOKUP関数について解説しました。
XLOOKUPを使いこなせると、データ検索の可能性が大きく広がり、これまで手作業で行っていた面倒なデータ照合や転記作業から解放され、あなたの業務は格段にスピードアップします。
まずはあなたの業務で使っているシートで、XLOOKUPを試してみてください!
※Googleサービスは、Google LLC の商標であり、この記事はGoogleによって承認されたり、Google と提携したりするものではありません。