Excelの検索・参照関数を徹底解説!VLOOKUP・INDEX・MATCH・XLOOKUPなどの使い方まとめ

パソコン

Excelを使っていると、「別の表からデータを引っ張ってきたい」「条件に合う値を探したい」と思う場面が多くあります。
そんなときに便利なのが「検索・参照系の関数」です。

代表的なものには、VLOOKUP関数やINDEX関数、MATCH関数、そして新しいXLOOKUP関数などがあります。
この記事では、Excelの検索・参照系関数をわかりやすく解説し、使い方の例も紹介します。

これを読めば、表の自動化や集計がぐっと効率的になります。


VLOOKUP関数:縦方向にデータを検索する

基本構文

=VLOOKUP(検索値, 範囲, 列番号, 検索の型)

意味と使い方

VLOOKUPは、指定した「検索値」を表の一番左の列から探し、見つかった行の指定列の値を返します。
「縦方向に探す(Vertical Lookup)」という意味です。

商品コード商品名価格
A001りんご100
A002みかん80
A003バナナ120

上の表で、商品コードから価格を調べたいときは次のように入力します。

=VLOOKUP("A002", A2:C4, 3, FALSE)

→ 結果は 80 が返されます。

ポイント

  • 検索列は「範囲の一番左側」である必要があります。
  • 完全一致を指定する場合は「FALSE」を使います。
  • データが追加される表では列の位置が変わると結果が崩れやすい点に注意です。

HLOOKUP関数:横方向にデータを検索する

基本構文

=HLOOKUP(検索値, 範囲, 行番号, 検索の型)

意味と使い方

HLOOKUPは「横方向(Horizontal)」に探す関数です。
表の1行目を見て検索し、見つかった列の指定行の値を返します。

ABC
商品りんごみかんバナナ
価格10080120
=HLOOKUP("みかん", A1:C2, 2, FALSE)

→ 結果は 80 になります。

ポイント

  • 横に並んだデータに使うと便利。
  • 構造がVLOOKUPと似ているが、検索方向が「横」である点が違います。

XLOOKUP関数:VLOOKUPの進化版(Excel新関数)

基本構文

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [照合モード], [検索モード])

意味と使い方

XLOOKUPは、VLOOKUPやHLOOKUPの弱点を克服した次世代の検索関数です。
検索列と戻り列の位置が自由で、縦にも横にも検索できます。

先ほどの「商品コード」表を使って、価格を取得します。

=XLOOKUP("A002", A2:A4, C2:C4, "該当なし")

→ 結果は 80

主な特徴

  • 左方向検索も可能(VLOOKUPではできなかった)
  • #N/Aエラー時の表示を指定できる
  • 範囲指定が簡潔で分かりやすい

ポイント

XLOOKUPはMicrosoft 365やExcel 2021以降で利用可能。
これから学ぶなら、まずこの関数を覚えておくのが一番おすすめです。


INDEX関数:行番号と列番号で値を取り出す

基本構文

=INDEX(範囲, 行番号, [列番号])

意味と使い方

INDEX関数は、指定した「行番号」と「列番号」で交わるセルの値を返します。
検索や抽出に柔軟に使える強力な関数です。

ABC
1りんご100
2みかん80
3バナナ120
=INDEX(B2:C4, 2, 2)

→ 結果は 80

ポイント

  • MATCH関数と組み合わせると、VLOOKUPのような検索が可能。
  • 範囲が変わっても安定して動作します。

MATCH関数:値の位置(インデックス番号)を取得する

基本構文

=MATCH(検索値, 検索範囲, [照合の種類])

意味と使い方

MATCHは、検索値が範囲内のどの位置(何番目)にあるかを返します。

=MATCH("みかん", A2:A4, 0)

→ 結果は 2
「みかん」が2番目の行にあることがわかります。

ポイント

  • 0は「完全一致」、1は「近似一致(昇順)」、-1は「近似一致(降順)」。
  • INDEXと組み合わせると、柔軟な検索式が作れます。

INDEX+MATCHの組み合わせ:VLOOKUPの代替として人気

=INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))

=INDEX(C2:C4, MATCH("A002", A2:A4, 0))

→ 結果は 80

メリット

  • 検索列が左側でもOK。
  • 列の追加・削除に強く、メンテナンスがしやすい。
  • MATCHで動的に位置を取得できるため、柔軟性が高い。

XMATCH関数:MATCHの強化版(Excel新関数)

基本構文

=XMATCH(検索値, 検索範囲, [照合モード], [検索モード])

意味と使い方

XMATCHはMATCHの進化版で、完全一致や部分一致、逆方向検索などが簡単にできます。

=XMATCH("A002", A2:A4, 0)

→ 結果は 2
MATCHと同じ結果になりますが、より柔軟に設定できます。

主な違い

  • 部分一致やワイルドカードを簡単に扱える
  • 最後から検索するモードがある
  • XLOOKUPと組み合わせると強力

OFFSET関数:基準セルからの位置を指定して値を取得

基本構文

=OFFSET(基準セル, 行数, 列数, [高さ], [幅])

意味と使い方

指定したセルから「上下・左右にずらした位置」を基準に値や範囲を取得します。

=OFFSET(A1, 2, 1)

→ A1から「2行下・1列右」のセルの値を返します。
つまり、B3の値が取得されます。

ポイント

  • 動的な範囲を作るときに便利。
  • ただし、大量に使うと処理が重くなることがあるので注意。

INDIRECT関数:文字列で指定した参照を有効化する

基本構文

=INDIRECT(参照文字列)

意味と使い方

セル番地を文字列として指定し、そのセルを参照します。

=INDIRECT("A2")

→ A2の値を参照します。

また、別シートを参照する場合は次のようにします。

=INDIRECT("Sheet2!B3")

ポイント

  • 動的なシート名を指定したいときに便利。
  • ただし、参照元シートが存在しないとエラーになります。

ADDRESS関数:行番号と列番号からセル番地を取得

基本構文

=ADDRESS(行番号, 列番号, [参照の種類], [A1形式], [シート名])

意味と使い方

行番号と列番号から「セル番地(例:B3)」を文字列として返します。

=ADDRESS(3, 2)

→ 結果は “$B$3”

=ADDRESS(3, 2, 4)

→ 結果は “B3”(絶対参照ではなく相対参照)。

ポイント

  • INDIRECT関数と組み合わせて使うと、動的な参照を作れます。

ROW関数・COLUMN関数:行番号・列番号を取得

ROW関数

=ROW(参照)

指定したセルの「行番号」を返します。
例:=ROW(B3) → 結果は 3

COLUMN関数

=COLUMN(参照)

指定したセルの「列番号」を返します。
例:=COLUMN(B3) → 結果は 2

ポイント

  • 動的な数式を作るときに便利。
  • INDEXやOFFSETなどと組み合わせて使うと応用が広がります。

実践例:VLOOKUPからXLOOKUPへの置き換え

従来のVLOOKUP式

=VLOOKUP(A2, 商品表!A2:C100, 3, FALSE)

新しいXLOOKUP式

=XLOOKUP(A2, 商品表!A2:A100, 商品表!C2:C100, "該当なし")

→ 同じ結果を返しながら、列構造が変わっても壊れません。
さらに「該当なし」のようなエラーメッセージも設定可能です。


応用テクニック:INDEX+MATCH+ROWで柔軟検索

=INDEX(C2:C10, MATCH(MAX(A2:A10), A2:A10, 0))

→ 「A列で最大値を持つ行のC列の値」を取得するような複雑な検索も可能。
このように組み合わせることで、VLOOKUPではできない高度な検索ができます。


まとめ

検索・参照関数は、Excelでのデータ処理に欠かせないスキルです。
それぞれの特徴を整理すると次のようになります。

関数検索方向主な用途
VLOOKUP縦方向一般的な表検索
HLOOKUP横方向横並びの表から検索
XLOOKUP双方向新世代の検索関数
INDEX+MATCH自由な位置検索柔軟で安定した検索式
OFFSET基準セルからの位置参照動的範囲の設定
INDIRECT文字列参照を有効化シート名やセル番地を動的に指定
ADDRESS行列から番地取得セル位置の動的生成
ROW/COLUMN行・列番号を取得数式の自動化に活用

特にXLOOKUP関数とINDEX+MATCHの理解が、現代のExcel活用では非常に重要です。
これらをマスターすれば、データ検索や集計の効率が飛躍的に向上します。

コメント

タイトルとURLをコピーしました