【スプレッドシート】VLOOKUP・HLOOKUP・XLOOKUP関数の使い方を徹底解説!

基本解説

「この商品IDの商品名なんだっけ…?」
「大量の顧客リストから、特定の会社の担当者を探し出したい…」

スプレッドシートでデータを管理していると、このような「特定のデータを探し出す」作業が頻繁に発生します。データが少なければ目視でも探せますが、数百、数千行にもなると、時間がかかるだけでなく、ミスも起こりがちです。

そんなデータ検索作業を自動化し、業務効率を劇的に向上させてくれるのが、VLOOKUPHLOOKUPXLOOKUPといった「LOOKUP(ルックアップ)系関数」です。

これらの関数を使えば、手作業での面倒な参照作業がなくなり、より創造的な業務に集中できるようになります。

本記事では、スプレッドシート関数初心者でも理解できるよう、
以下の3つの関数について、基礎から実践的な使い方を、具体的な業務シーンを想定した例と共に解説します。

  • VLOOKUP関数:縦方向のリストからデータを検索する、最もポピュラーな関数
  • HLOOKUP関数:横方向のリストからデータを検索する関数
  • XLOOKUP関数:VLOOKUPとHLOOKUPの弱点を克服した、便利な検索関数

結論から言うと、これから新しく覚えるのであれば「XLOOKUP関数」のみで十分です。この記事を読めば、その理由も明確に理解できるでしょう。

データ参照の基本をマスターして、日々の業務をスマートに進めていきましょう!

LOOKUP系関数とは?

まず、「LOOKUP系関数」が一体何をしてくれるのか、その基本を掴みましょう。

一言でいうと、LOOKUP系関数は
「データリストの中から、指定した条件(キー)に一致するデータを探して、取り出してくれる関数」です。

例えば、以下のような「商品リスト」があったとします。

商品リスト
商品ID、商品名、単価が記載された商品リスト

このリストから「商品ID:S-003」の「商品名」と「単価」を知りたい場合、LOOKUP系関数を使えば、商品IDを指定するだけで「ビジネスリュック」や「8500」という値を自動で取得できます。

今回ご紹介する3つの関数には、それぞれデータの探し方に特徴があります。

  • VLOOKUPVertical(垂直)の略。縦長の表(列方向にデータが並んでいる表)の検索が得意。
  • HLOOKUPHorizontal(水平)の略。横長の表(行方向にデータが並んでいる表)の検索が得意。
  • XLOOKUP:VとHの機能を含み、さらに弱点を克服した万能型。縦横どちらの検索も可能。

では、それぞれの関数の具体的な使い方を、最も基本的なVLOOKUPから見ていきましょう。

【基本】VLOOKUP関数の使い方

VLOOKUP関数は、LOOKUP系関数の中で最も有名で、多くのシートで利用されている関数です。まずはこの関数の仕組みを理解することが、データ参照の第一歩となります。

VLOOKUP関数の構文

VLOOKUP関数は、4つの情報(引数)を指定して使います。

=VLOOKUP(
  検索キー,
  範囲,
  指数,
  [並べ替え済み]
)

少し難しく感じるかもしれませんが、一つひとつの意味はシンプルです。

  1. 検索キー:「何を探したいか」を指定します。検索の“手がかり”となる値や、その値が入力されたセルを指定します。(例:「S-003」)
  2. 範囲:「どこを探すか」を指定します。検索キーが含まれる列から、取り出したいデータが含まれる列まで、表全体の範囲を選択します。(例:商品リスト全体のA列からC列)
  3. 指数:「どのデータを取り出したいか」を指定します。範囲の中で、取り出したいデータが左から何番目の列にあるかを数値で指定します。(例:商品名なら「2」、単価なら「3」)
  4. 並べ替え済み(省略可能):検索の一致方法を指定します。実務では、特定の情報を正確に探す「完全一致」が求められるため、基本的にFALSEを指定します。
    • TRUE(近似一致): 検索キーと完全に一致する値がない場合、検索キー以下の最も近い値を探します。このオプションを使うには、検索範囲の先頭列が昇順(小さい順)に並べ替えられている必要があります。
    • FALSE(完全一致): 検索キーと完全に一致する値だけを探します。

【ポイント】なぜ実務では「FALSE」が基本なのか?

TRUE(近似一致)は、料金テーブルから段階的な割引率を求めるといった特殊なケースで使われますが、意図しない検索結果を招くリスクがあります。
一方、ビジネスシーンで求められるデータ検索の多くは「商品IDに完全一致する商品名」のように、特定の情報を正確に探し出すことです。
そのため、確実な「完全一致」であるFALSEを指定するのが、ミスを防ぐための定石となっています。

実践!VLOOKUP関数で商品名を検索する

それでは、先ほどの「商品リスト」を使って、実際にVLOOKUP関数を組んでみましょう。

別のシートに商品IDを入力したら、対応する商品名と単価が自動で表示されるようにします。

VLOOKUPで商品商品名を取得

商品名を表示させる(B2セル)

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

単価を表示させる(C2セル)

=VLOOKUP(
  A2,
  商品リスト!A:C,
  3,
  FALSE
)
  • 指数が3に変わっただけです。範囲内で左から3番目の「単価」列を取得します。

このように、一度数式を組んでしまえば、A2セルの商品IDを「S-001」や「S-005」に変えるだけで、商品名と単価も自動で切り替わります。

VLOOKUP関数の注意点と弱点

非常に便利なVLOOKUPですが、実務で使う上で知っておくべき重要な弱点があります。

  1. 検索キーは範囲の「左端」にある必要がある
    VLOOKUP最大の制約です。検索キー(例:商品ID)は、指定した範囲の一番左の列になければ検索できません。「商品名」から「商品ID」を探す、といった逆引きはできないのです。
  2. 列の挿入・削除に弱い
    指数(列番号)を直接指定するため、元の表の構成が変わると、ずれてしまいます。例えば、商品リストのB列とC列の間に「カテゴリ」列を挿入すると、単価は4列目になるため、単価を取得していた数式の指数を3から4に修正しなければなりません。
  3. エラー処理が面倒
    検索キーに該当するデータが見つからなかった場合、#N/A というエラーが表示されます。これを「該当なし」のような分かりやすい表示に変えるには、=IFERROR(VLOOKUP(…), “該当なし”) のように、IFERROR関数を別途組み合わせる必要があります。

【応用】MATCH関数を組み合わせて弱点を補う

VLOOKUPの弱点である「列の挿入・削除に弱い」点は、MATCH関数を組み合わせることで解決できます。

MATCH関数は、MATCH(検索キー, 範囲, [検索の種類]) のように使い、指定した範囲の中から検索キーが「何番目にあるか」を数値で返してくれる関数です。

これをVLOOKUPの指数の部分に応用します。

VLOOKUPの指数をMATCHで取得している
指数をMATCH関数で取得することで、列順が変わっても関数を直す必要が無い
=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(
  検索キー,
  検索範囲,
  結果範囲,
  [見つからない場合の値],
  [一致モード],
  [検索モード]
)
  1. 検索キー「何を探したいか」(VLOOKUPと同じ)
  2. 検索範囲「検索キーをどの列(または行)で探すか」を指定します。VLOOKUPのように表全体ではなく、検索キーが含まれる1列(または1行)だけを指定します。
  3. 結果範囲「どの列(または行)のデータを取り出したいか」を指定します。取り出したいデータが含まれる1列(または1行)だけを指定します。

この「検索範囲」と「結果範囲」を別々に指定できる点が、XLOOKUPが柔軟である最大の理由です。

実践例1:VLOOKUPの弱点を克服(氏名から社員番号を検索)

VLOOKUPでは不可能だった「検索キーより左側の列のデータを取得する」例を見てみましょう。

VLOOKUP関数でも使用した商品リストから、「商品名」をキーに「商品ID」を検索します。

XLOOKUPで商品名から商品IDを取得している
XLOOKUP関数で、商品名をキーに商品IDが取得できた
=XLOOKUP(
  B2,
  '商品リスト'!B:B,
  '商品リスト'!A:A
)
  • 検索キー:B2(「ビジネスリュック」が入力されたセル)
  • 検索範囲:’商品リスト’!B:B(「商品リスト」シートの商品名が入力されているB列全体)
  • 結果範囲:’商品リスト’!A:A(取得したい商品IDが入力されている、「商品リスト」シートのA列全体)

このように、検索範囲(B列)の左側にある結果範囲(A列)のデータを取得できました。

実践例2:エラー処理も関数内で完結

もしリストにない名前を検索した場合、VLOOKUPでは「#N/A」というエラーが表示されますが、XLOOKUPなら分かりやすいメッセージを表示できます。

XLOOKUPでエラー時の設定をしている
XLOOKUP関数だけで、エラーの場合のテキスト「該当商品無し」を表示できている
=XLOOKUP(
  B3,
  '商品リスト'!B:B,
  '商品リスト'!A:A,
  "存在しない商品"
)
  • 4番目の引数「見つからない場合の値」に”存在しない商品”と指定するだけで、エラー表示を回避し、任意のテキストを表示できます。IFERROR関数を使うよりずっとスマートです。

実践例3:横方向の検索(HLOOKUPの代替)

XLOOKUPは横方向の検索も可能です。HLOOKUPで使った月別売上データで試してみましょう。

XLOOKUPで横方向のデータ取得
XLOOKUP関数でHLOOKUP関数と同じ結果が取得できた
=XLOOKUP(
  "商品B",
  A1:C1,
  A3:C3
)
  • 検索キー:”商品B”
  • 検索範囲:A1:C1(商品名が入力されている1行目)
  • 結果範囲:A3:C3(取得したい5月のデータが入力されている3行目)

このように、XLOOKUPは縦横を意識することなく、同じ考え方でデータを検索できます。

VLOOKUP・HLOOKUP・XLOOKUPの特徴まとめ

最後に、3つの関数の特徴を整理します。

関数名メリットデメリット・注意点
VLOOKUP・最も有名で広く使われている
・縦長の表の検索
・検索キーが範囲の左端にある必要がある
・列の挿入/削除に弱い
・エラー処理にはIFERRORが必要
HLOOKUP・横長の表を検索できる・検索キーが範囲の上端にある必要がある
・行の挿入/削除に弱い
・使われる場面が限定的
XLOOKUPV/HLOOKUPの弱点をすべて克服
・検索キーの位置が自由
・列/行の挿入/削除に強い
・エラー処理が関数内で完結
・縦横どちらも検索可能
・比較的新しい関数のため、古いバージョンのExcelでは使えない場合がある
(Googleスプレッドシートでは問題なく利用可能)

結論:これから新規作成、既存シートを更新するなら、XLOOKUPを使おう!

まとめ

今回は、スプレッドシートにおけるデータ検索の必須スキルであるVLOOKUP、HLOOKUP、そしてXLOOKUP関数について解説しました。

XLOOKUPを使いこなせると、データ検索の可能性が大きく広がり、これまで手作業で行っていた面倒なデータ照合や転記作業から解放され、あなたの業務は格段にスピードアップします。

まずはあなたの業務で使っているシートで、XLOOKUPを試してみてください!

※Googleサービスは、Google LLC の商標であり、この記事はGoogleによって承認されたり、Google と提携したりするものではありません。