VLOOKUP・HLOOKUP・XLOOKUP・MATCH・INDEXの違いと使い分け|検索関数5つの書き方

VLOOKUP・HLOOKUP・XLOOKUP・MATCH・INDEXの違いと使い分け|検索関数5つの書き方

Excelには、特定の条件に基づいてデータを検索するためのさまざまな関数が用意されています。中でも、VLOOKUP、HLOOKUP、およびXLOOKUP関数は非常に便利です。このブログでは、これらの関数の使い方を具体的な例を用いて説明します。

目次

VLOOKUP関数(Excel 2010以降)

VLOOKUP関数は、指定したキーを垂直(列方向)に検索し、対応するセルの値を返します。

構文

VLOOKUP関数の構文
数式=VLOOKUP(検索値,範囲,列番号,[範囲検索])
ひとことで範囲の左端の列を縦に探し、同じ行の指定した列を返す
検索値
探す値です
範囲
表の範囲です。探す列は、いちばん左にします
列番号
返す値が、範囲の左から何列目かを指定します
[範囲検索]
FALSEなら完全一致、TRUEなら近似一致です。ふつうは FALSE を指定します
補足返したい列が、探す列より左にあるときは使えません。その場合はXLOOKUPを使います。
  • 検索値: 検索する値
  • 範囲: データが含まれる範囲
  • 列番号: 戻り値を取得する列番号
  • 範囲検索: (オプション)正確一致ならFALSE、近似一致ならTRUE

例

以下の例では、「D-101」という商品番号を持つ商品の価格を検索します:

セルに入力:商品番号から単価を探す
数式=VLOOKUP("D-101",A2:D5,4,FALSE)
ひとことで商品番号「D-101」の単価を返す
"D-101"
探す商品番号です
A2:D5
表の範囲です(左端が商品番号)
4
4列目(単価)を返します
FALSE
完全一致で探します
補足結果は 600 です。

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

HLOOKUP関数(Excel 2010以降)

HLOOKUP関数は、指定したキーを水平(行方向)に検索し、対応するセルの値を返します。

構文

HLOOKUP関数の構文
数式=HLOOKUP(検索値,範囲,行番号,[範囲検索])
ひとことで範囲の上端の行を横に探し、同じ列の指定した行を返す
検索値
探す値です
範囲
表の範囲です。探す行は、いちばん上にします
行番号
返す値が、範囲の上から何行目かを指定します
[範囲検索]
FALSEなら完全一致、TRUEなら近似一致です
補足縦に並んだ表では、探す対象は「見出しの行」になります。
  • 検索値: 検索する値
  • 範囲: データが含まれる範囲
  • 行番号: 戻り値を取得する行番号
  • 範囲検索: (オプション)正確一致ならFALSE、近似一致ならTRUE

例

以下の例では、「D-101」という商品番号を持つ商品の価格を検索します:

注意確認メモ:元の記事の式 =HLOOKUP("D-101", A2:A5, 3, FALSE) は、実際のExcelでは #N/A エラーになります。HLOOKUPは「表の1行目(上端の行)」を横に探す関数なので、商品番号が縦に並ぶ列(A2:A5)を検索範囲にすると、見つかりません。練習用ファイルと同じ、次の式に直しています。
セルに入力:見出しの行から探す(練習用ファイルの式)
数式=HLOOKUP("商品名",A1:D5,3,FALSE)
ひとことで見出し「商品名」の列の、3行目の値を返す
"商品名"
探す見出しです(1行目にあります)
A1:D5
見出しを含む表の範囲です
3
3行目(B-102の洋菓子)を返します
FALSE
完全一致で探します
補足結果は「洋菓子」です。

XLOOKUP関数(Microsoft 365およびExcel 2021)

XLOOKUP関数は、VLOOKUPやHLOOKUPの機能を拡張した新しい関数で、どの方向にも検索が可能です。Microsoft 365やExcel 2021で利用できます。

商品番号から単価を取り出す(XLOOKUP)式 =XLOOKUP("D-101",A2:A5,D2:D5,"Not found",0,1) の解説図。D10に入力する
D10に =XLOOKUP("D-101",A2:A5,D2:D5,"Not found",0,1) を入力。A列で D-101 は4行目 → D列の単価 600

構文

XLOOKUP関数の構文
数式=XLOOKUP(検索値,検索範囲,戻り値範囲,[見つからない場合],…)
ひとことで探す範囲と返す範囲を別々に指定して検索する
検索値
探す値です
検索範囲
探す列(または行)です
戻り値範囲
返す列(または行)です。検索範囲と同じ大きさにします
[見つからない場合]
見つからないときに表示する値です。省略すると #N/A です
補足一致条件・検索モードは、省略できます(完全一致・先頭から検索)。Microsoft 365・Excel 2021以降で使えます。
  • 検索値: 検索する値
  • 検索範囲: 検索範囲
  • 戻り値範囲: 戻り値を取得する範囲
  • 見つからない場合: (オプション)見つからない場合の値
  • 一致条件: (オプション)一致条件
  • 検索モード: (オプション)検索モード

例

以下の例では、「D-101」という商品番号を持つ商品の価格を検索します:

セルに入力:商品番号から単価を探す
数式=XLOOKUP("D-101",A2:A5,D2:D5,"Not found",0,1)
ひとことで商品番号「D-101」の単価を返す
"D-101"
探す商品番号です
A2:A5
探す列(商品番号)です
D2:D5
返す列(単価)です
"Not found"
見つからないときの表示です
補足結果は 600 です。

MATCH関数(Excel 2010以降)

MATCH関数は、指定した値が範囲内で最初に出現する位置を返します。検索した値の位置を取得する際に使用します。

構文

MATCH関数の構文
数式=MATCH(検索値,検索範囲,[一致の種類])
ひとことで検索値が、範囲の何番目にあるか(位置)を返す
検索値
探す値です
検索範囲
探す範囲(1列または1行)です
[一致の種類]
0なら完全一致、1なら以下で最大、-1なら以上で最小です
補足値そのものではなく、位置を返します。
  • 検索値: 検索する値
  • 検索範囲: 検索範囲
  • 一致の種類: 一致の種類(1:以下、0:完全一致、-1:以上)

例

以下の例では、「プリン」という商品の位置を検索します:

セルに入力:商品名の位置を探す
数式=MATCH("プリン",B2:B5,0)
ひとことで「プリン」が、商品名の列の何番目にあるかを返す
"プリン"
探す商品名です
B2:B5
商品名の列です
補足結果は 3(上から3番目)です。

INDEX関数(Excel 2010以降)

INDEX関数は、指定した行番号と列番号に基づいて範囲内のセルの値を返します。MATCH関数と組み合わせることで、特定のデータを取得する際に便利です。

構文

INDEX関数の構文
数式=INDEX(範囲,行番号,[列番号])
ひとことで範囲の中の、行・列の位置にある値を返す
範囲
データの範囲です
行番号
範囲の上から何行目かを指定します
[列番号]
範囲の左から何列目かを指定します
補足MATCH関数と組み合わせると、位置を探して値を取り出せます。
  • 範囲: データ範囲
  • 行番号: 行番号
  • 列番号: (オプション)列番号

例

以下の例では、B2:D5範囲内の3行目、2列目の値を返します:

セルに入力:3行目・2列目の値を取り出す
数式=INDEX(B2:D5,3,2)
ひとことでB2:D5の、3行目・2列目のセルの値を返す
B2:D5
データの範囲です
3
上から3行目(D-101の行)です
2
左から2列目(カテゴリ)です
補足結果は「デザート」です。

サンプルデータ

以下に、VLOOKUP、HLOOKUP、XLOOKUP、および関連するMATCH関数とINDEX関数を使用したサンプルデータを提供します。このデータをExcel関数の練習に使用してください。

Excel形式データダウンロード

以下は、Excelデータですので、ダウンロードして練習などに使用してください。

練習用Excelファイル(無料ダウンロード)
この記事の解説で使うExcelデータです。数式と練習データが入っているので、本文の式を同じ表で試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

表形式

行列A列B列C列D
1商品番号商品名カテゴリ単価
2B-101和菓子食品300
3B-102洋菓子食品450
4D-101プリンデザート600
5D-102杏仁豆腐デザート160
6検索結果
7VLOOKUP=VLOOKUP(“D-101”, A2:D5, 4, FALSE)
8HLOOKUP=HLOOKUP(“D-101”, A2:A5, 3, FALSE)
9XLOOKUP=XLOOKUP(“D-101”, A2:A5, D2:D5, “Not found”, 0, 1)
10MATCH=MATCH(“プリン”, B2:B5, 0)
11INDEX=INDEX(B2:D5, 3, 2)

CSV形式

以下は、上記のデータをカンマ区切りで記載したものです。このデータをコピーしてExcelに貼り付けて使用してください。

"商品番号","商品名","カテゴリ","単価"
"B-101","和菓子","食品","300"
"B-102","洋菓子","食品","450"
"D-101","プリン","デザート","600"
"D-102","杏仁豆腐","デザート","160"
"検索結果",,,
"VLOOKUP",,,"=VLOOKUP(""D-101"",A2:D5,4,FALSE)"
"HLOOKUP",,,"=HLOOKUP(""D-101"",A2:A5,3,FALSE)"
"XLOOKUP",,,"=XLOOKUP(""D-101"",A2:A5,D2:D5,""Not found"",0,1)"
"MATCH",,,"=MATCH(""プリン"",B2:B5,0)"
"INDEX",,,"=INDEX(B2:D5,3,2)"

【実機で検証】並んでいない表で、第 4 引数を省くと

商品番号が 300・100・200・400 と小さい順に並んでいない表で、表にない「250」を探しました。

エクセルで並んでいない表のVLOOKUPで第4引数を省くとまちがった値が返りFALSEやXLOOKUPでは#N/Aになった画面
エクセルで並んでいない表のVLOOKUPで第4引数を省くとまちがった値が返りFALSEやXLOOKUPでは#N/Aになった画面
式200 を探す250 を探す(表にない)
=VLOOKUP(値,A2:B5,2)(第 4 引数なし)ぶどうぶどう(まちがい)
=VLOOKUP(値,A2:B5,2,FALSE)ぶどう#N/A
=XLOOKUP(値,A2:A5,B2:B5)ぶどう#N/A

第 4 引数を省いた VLOOKUP は、表にない 250 でも「ぶどう」を返しました。省くと「近い値を探す」設定になるためで、エラーにならないので気づきにくくなります。VLOOKUP と HLOOKUP は第 4 引数に FALSE を書きます。XLOOKUP は何も書かなくても完全に一致するものだけを探しました。

まとめ

ExcelでVLOOKUP、HLOOKUP、XLOOKUP関数、MATCH関数、およびINDEX関数を使用することで、特定の条件に基づいてデータを効率的に検索し、取得することができます。これらの関数を理解し活用することで、データの分析や管理をより効果的に行うことができます。このブログを参考にして、Excelを最大限に活用してください。


このブログが役に立ちましたら幸いです。さらにサポートが必要なことや質問があれば、お知らせください。Happy Excel-ing!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次