「大量のデータの中から、特定の条件に合う値をパッと取り出したい」 Excelを使っていると、必ずと言っていいほどぶつかる壁がこの「データの抽出」です。多くの方はまずVLOOKUP関数を思い浮かべるかもしれません。もちろんVLOOKUPも便利ですが、実は「INDEX関数」と「MATCH関数」を組み合わせることで、より柔軟で強力なデータ抽出が可能になります。
「関数を組み合わせるなんて難しそう……」と感じるかもしれませんが、仕組みさえわかれば実はとてもシンプルです。今回は、Excel初心者の方に向けて、INDEX関数とMATCH関数の組み合わせ方とそのメリットを、かみ砕いて丁寧に解説します。
INDEX関数とMATCH関数は「役割」が違う
いきなり組み合わせ方を説明する前に、まずはそれぞれの関数が単体でどのような役割を持っているかを確認しましょう。ここを理解することが、組み合わせマスターへの近道です。
INDEX関数とは?:指定した場所の「値」を出す
INDEX関数を一言でいうと、「表の中から、〇行目と〇列目が交差する場所にあるデータを取ってくる」関数です。
例えば、A2からD5までの範囲の表があったとして、「3行目の3列目にある値を表示して」と指示を出すと、そのセルに入っているデータを返してくれます。
【INDEX関数の基本的な流れ】
- データを抽出したい範囲を選択する(例:セルA2:D5)
- 抽出したい「行番号」を指定する(例:3)
- 抽出したい「列番号」を指定する(例:3)
→ これにより、指定した位置にある値(例:「熊本」など)が表示されます。
MATCH関数とは?:指定した値が「何番目か」を出す
一方でMATCH関数は、値そのものを出すのではなく、「探している値が、指定した範囲の中で上から(あるいは左から)数えて何番目にあるか」という「位置(番号)」を教えてくれる関数です。
例えば、商品名のリストの中から「商品A」が何行目にあるかを探したいとき、MATCH関数を使えば「3番目にあります」という数値を返してくれます。
【MATCH関数の基本的な流れ】
- 検索したい値(検査値)を指定する
- 検索する範囲を指定する
- 照合の種類(完全一致なら「0」)を指定する
→ これにより、その値が範囲内の何番目にあるかという数値が表示されます。
なぜこの2つを組み合わせるのか?
「INDEX関数で場所を指定すればいいし、MATCH関数で番号がわかるなら、わざわざ組み合わせなくてもいいのでは?」と思うかもしれません。
しかし、INDEX関数には弱点があります。それは「行番号や列番号を、人間が手動で数字(3行目、2列目など)として指定しなければならない」という点です。データが数百件、数千件ある場合、いちいち「〇〇さんは何行目だっけ?」と数えるのは不可能です。
そこでMATCH関数の出番です。 「MATCH関数に自動で『何番目か』を探させ、その番号をそのままINDEX関数に渡す」 という連携技を使うことで、検索したい値が変わっても、自動的に正しい場所からデータを抽出してくれる「動的な仕組み」が完成します。
【実践】INDEX関数とMATCH関数を組み合わせる手順
それでは、具体的にどのように関数を記述するのか、その手順を見ていきましょう。
1. MATCH関数で「行番号」を特定する
まずは、抽出したいデータが何行目にあるかをMATCH関数で求めます。 例えば、商品名が記載されている範囲(A3~A6)の中から、特定の「商品名」が何番目にあるかを検索します。
`=MATCH(検索したい商品名, 商品名が並んでいる範囲, 0)`
これで、「その商品は3番目にある」という数値が得られます。
2. INDEX関数にMATCH関数を組み込む
次に、INDEX関数を使います。INDEX関数の「行番号」を指定する部分に、先ほどのMATCH関数をそのまま入れ込みます。
`=INDEX(抽出したいデータ全体の範囲, MATCH(検索値, 検索範囲, 0), 列番号)`
このように記述することで、Excelは以下のような処理を瞬時に行います。
- MATCH関数が「検索値」を範囲から探し、「〇番目にある」という番号を出す。
- INDEX関数が、その「〇番目」という番号を受け取り、指定した列の値を抽出する。
例えば、2列目に「価格」が入っている表であれば、列番号に「2」と指定することで、商品名に連動した価格を自動的に表示させることができるようになります。
VLOOKUP関数との違いとメリット
多くの人が使い慣れているVLOOKUP関数と比べて、INDEX+MATCHの組み合わせにはどのようなメリットがあるのでしょうか。
検索方向の自由度が高い
VLOOKUP関数には大きな制約があります。それは「検索値(キーとなる列)が、必ず抽出範囲の左端になければならない」ということです。つまり、検索値より左側にある列のデータは抽出できません。
しかし、INDEX関数とMATCH関数の組み合わせであれば、検索範囲と抽出範囲を別々に指定できるため、検索値が右側にあり、抽出したい値が左側にある場合でも問題なく抽出できます。この柔軟性が、実務において非常に大きなメリットとなります。
表の変更に強い
VLOOKUP関数では、列番号を「3列目」のように数字で直接指定することが一般的です。しかし、表の途中に新しい列を挿入すると、列番号がズレてしまい、正しくないデータを抽出してしまうエラーが頻発します。
INDEX+MATCHの組み合わせで、列番号の部分にもMATCH関数を組み込んで「項目名」で検索するようにしておけば、列が増減しても自動的に正しい列を追いかけてくれるため、メンテナンスの手間が大幅に削減されます。
よくあるエラーと対処法
組み合わせを使っていると、期待した結果が出ずにエラーになることがあります。代表的な原因と解決策を確認しておきましょう。
#N/A エラーが出る場合
このエラーは主に「MATCH関数が検索値を見つけられなかった」ときに発生します。
- 完全一致の「0」を指定しているか:MATCH関数の第3引数に「0」が入っていないと、正しく検索できないことがあります。
- 余計なスペースが入っていないか:検索値やセル内の文字に、目に見えない空白(スペース)が入っていると、別の文字として判定され、見つからない扱いになります。
意図しない値が表示される場合
- 範囲のズレを確認する:INDEX関数で指定した「範囲」と、MATCH関数で指定した「検索範囲」の開始位置がズレていないか確認してください。例えば、INDEXは2行目から始まっているのに、MATCHが1行目から始まっていると、抽出される行が1つズレてしまいます。
まとめ:脱・初心者への第一歩
INDEX関数とMATCH関数の組み合わせは、最初は複雑に見えるかもしれません。しかし、「MATCHで場所を探し、INDEXで中身を取り出す」という役割分担さえ理解できれば、Excelでのデータ操作の幅が格段に広がります。
VLOOKUPの制約に悩み、「もっと自由にデータを抽出したい」と感じたときは、ぜひこの組み合わせを試してみてください。一度使いこなせるようになれば、大量のデータ集計や管理表の作成が驚くほど効率的になります。
まずは小さな表で、一つひとつ関数を組み立ててみることから始めてみましょう。Excelの便利さを最大限に引き出し、スマートな業務効率化を実現してください。
ピックアップ記事



