Categories: excel

Excel INDEX関数とMATCH関数の組み合わせで効率的にデータを抽出する方法

Excelで表から特定の情報を取り出したいとき、あなたはどうしていますか?
VLOOKUP関数を使っている方も多いと思いますが、「列の位置が変わると壊れる」「左側の値が取れない」といった不便さを感じたことがあるのではないでしょうか。そんなときに役立つのがINDEX関数とMATCH関数の組み合わせです。
この2つの関数を使えば、より柔軟で強力な検索が可能になります。本記事では、初心者の方でもわかるように、基本的な使い方から応用テクニックまでを解説していきます。


INDEX関数とは?:指定位置の値を取り出す関数

まずはINDEX関数の基本からおさえましょう。
INDEX関数は、指定した範囲の中から「行」と「列」を指定して、その交差するセルの値を取り出す関数です。

基本構文

excelコピーする編集する=INDEX(範囲, 行番号, [列番号])

たとえば、A1:C3の範囲の中から、2行目・3列目の値を取り出す場合:

=INDEX(A1:C3, 2, 3)

この式は、B2の行のC列、つまりセルC2の値を返します。

列番号を省略して、1列のデータから取り出す場合もあります。

=INDEX(A1:A10, 3)

これはA3の値を返します。


MATCH関数とは?:指定した値の位置を返す関数

MATCH関数は、指定した値が範囲内の何番目にあるかを返す関数です。
たとえば、「売上」という文字がA1:A10のどこにあるかを調べるときに使います。

基本構文

=MATCH(検索値, 検索範囲, [照合の種類])
  • 検索値:探したいデータ(例:「売上」)
  • 検索範囲:探す場所(例:A1:A10)
  • 照合の種類:0(完全一致)、1(以下の最大値)、-1(以上の最小値)

=MATCH("売上", A1:A10, 0)

この式は、「売上」がA列の何番目の行にあるかを返します。たとえばA3にあるなら「3」が返されます。


INDEXとMATCHを組み合わせて使う方法

この2つの関数を組み合わせると、VLOOKUPよりも自由度の高い検索が可能になります。

基本構文

=INDEX(参照範囲, MATCH(検索値, 検索範囲, 0))

MATCH関数で行番号を取得し、それをINDEX関数に渡して、対応する値を取り出します。

例:社員名からIDを取得する

以下のようなデータがあるとします:

A列(社員ID)B列(社員名)
101佐藤
102鈴木
103田中

たとえば、「鈴木さんの社員ID」を求めたい場合:

=INDEX(A2:A4, MATCH("鈴木", B2:B4, 0))
  • MATCH(“鈴木”, B2:B4, 0):2を返す(鈴木はB3にある)
  • INDEX(A2:A4, 2):A3の値「102」が返される

VLOOKUPと何が違う?INDEX+MATCHのメリット

VLOOKUP関数と比較すると、INDEX+MATCHには以下のような利点があります:

1. 検索列が右側でなくてもよい

VLOOKUPは、左から右への検索しかできませんが、INDEX+MATCHなら、検索列と取得列の位置が自由です。

2. 列の追加・削除に強い

VLOOKUPは列番号指定のため、途中で列を追加すると壊れますが、MATCHは動的に列番号を返すため壊れにくい。

3. より高速

大量データ処理時に、MATCHとINDEXの方が処理が速くなるケースがあります。


列方向にも対応:2次元データへの応用

INDEX関数は、行と列を両方指定できます。MATCHを2つ使えば、行・列の両方を指定して交差する値を取り出すことも可能です。

例:社員名×月で売上を取り出す

A列(社員名)B列(1月)C列(2月)D列(3月)
佐藤100150120
鈴木90130110
田中80140100

たとえば、「鈴木」さんの「2月」の売上を取り出すには:

=INDEX(B2:D4, MATCH("鈴木", A2:A4, 0), MATCH("2月", B1:D1, 0))

行方向と列方向両方で位置を検索し、該当する交点のセルを取り出しています。


セル参照を使った柔軟な検索式の作り方

検索値をセルに入力できるようにすれば、動的な検索シートが作れます。

  • B1セルに「検索する名前」
  • C1セルに「検索する月」
=INDEX(B2:D4, MATCH(B1, A2:A4, 0), MATCH(C1, B1:D1, 0))

これにより、ユーザーが検索項目を変えるだけで、検索結果も変わる柔軟な検索表が完成します。


よくあるエラーと対処法

#N/Aエラー

MATCH関数が値を見つけられなかったときに出ます。
→ 入力ミス、余計なスペースが原因の場合もあります。

#REF!エラー

INDEX関数が無効な位置を参照しようとしたときに出ます。
→ MATCHの返り値が0以下、または範囲外の数値。

対処法:IFERROR関数を使う

=IFERROR(INDEX(…), "該当なし")

エラーが出たときに「該当なし」などのメッセージを表示して、見栄えを整えましょう。


応用テクニック:部分一致・複数条件検索

部分一致検索(LIKE検索的な使い方)

MATCH関数は、部分一致検索ができませんが、配列数式FILTER関数(Excel 365以降)を使えば応用可能です。

複数条件の検索

複数条件で一致する行を探したい場合は、配列数式INDEX+MATCH+&記号の組み合わせで対応できます。


まとめ

INDEX関数とMATCH関数の組み合わせは、VLOOKUPよりも柔軟で応用範囲の広い検索手段です。

  • 行列を自由に検索できる
  • 左側のデータも取得可能
  • 列の挿入に強い
  • 動的な検索表も作れる

一度使い方を覚えれば、データ分析や報告書作成において、あなたのExcel作業が劇的に効率化されるはずです。
ぜひこの機会に、INDEX+MATCHの組み合わせをマスターしてみてください!

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。