【Excel超入門】VLOOKUPの次に覚えたい!INDEXとMATCH関数の使い方を徹底解説

「MATCHで探して、INDEXで取る」最強タッグを解説

こんにちは!社労士事務所ぽけっとです。

日々の業務でExcelを使っていると、「このデータとあのデータをくっつけたい…」「大量のデータの中から特定の情報を探し出したい…」といった場面がよくありますよね。
特に、人事労務管理では従業員名簿や給与データなど、多くの情報を扱うため、Excelスキルは業務効率に直結します。

当ブログでは、これまで何度も「XLOOKUP関数」の圧倒的な便利さについてお伝えしてきました。
その手軽さと高機能さは、まさにデータ検索の革命と言えるでしょう。
しかし、皆さんが扱うファイルが全て最新の形式とは限りません。
他の部署から回ってきた資料や、昔から使われている管理表では、今もなお「INDEX関数」「MATCH関数」の組み合わせが現役で活躍しています。
「数式は入っているけど、何を参照しているのか分からない…」と困った経験はありませんか?

「XLOOKUPがあるなら、もう覚えなくてもいいのでは?」と感じる方も多いかもしれません。
しかし、このクラシックな組み合わせを理解することで、VLOOKUP関数では不可能だった複雑な検索が可能になるだけでなく、XLOOKUPがなぜ便利なのか、その仕組みをより深く理解することができます。

この記事では、そんなINDEX関数とMATCH関数について、初心者の方にも分かりやすく、基本から丁寧に解説していきます。
私たちが推奨するXLOOKUP関数との違いも比較しながら、一緒にマスターしていきましょう!

ステップ1:MATCH関数で「場所(何番目か)」を見つける

まずはMATCH関数から見ていきましょう。この関数の役割は非常にシンプルです。

MATCH関数とは、「指定した範囲の中で、探したいデータが何番目にあるか」を教えてくれる関数です。

構文は以下の通りです。

=MATCH(検査値, 検査範囲, [照合の型])

  • 検査値:探したいデータ(例:「りんご」という文字や、その文字が入力されたセル)
  • 検査範囲:探す場所の範囲(例:果物のリストが入力されている列)
  • 照合の型:探し方。通常は「0」を指定します。これは「完全に一致するものだけを探す」という意味です。

【具体例】社員名簿から「田中 太郎」さんの位置を探す

以下の様な社員名簿で、F3セルに「田中 太郎」と入力したとします。

この「田中 太郎」さんがB列の氏名リストの中で上から何番目にいるか調べてみましょう。G3セルに以下の数式を入力します。

=MATCH(F3, B:B, 0)

すると、「4」という結果が返ってきます。
これは、F3セルに入力された「田中 太郎」さんが、B列の中で4番目に見つかったことを意味します。

このように、MATCH関数は「場所(行番号や列番号)」を特定するために使います。
これが後でINDEX関数と組み合わせる際に非常に重要になります。

ステップ2:INDEX関数で「指定した場所のデータ」を取り出す

次にINDEX関数です。この関数も役割はシンプルです。

INDEX関数とは、「指定した範囲の中から、〇行目で△列目のデータを取り出す」という命令ができる関数です。

構文は以下の通りです。

=INDEX(配列, 行番号, [列番号])

  • 配列:データを取り出す対象の範囲全体(例:社員名簿の表全体)
  • 行番号:取り出したいデータが、範囲内の何行目にあるか
  • 列番号:取り出したいデータが、範囲内の何列目にあるか

【具体例】社員名簿の4行目、3列目のデータを取り出す

先ほどの社員名簿全体(A列からD列)を範囲として、F7セルに「4」(行番号)、G7セルに「3」(列番号)を入力します。

H7セルに以下の数式を入力します。

=INDEX(A:D, F7, G7)

すると、「営業部」という結果が返ってきます。
これは、指定したA列からD列の範囲の中で、F7セルで指定した「4行目」にあり、かつG7セルで指定した「3列目」にあるデータが「営業部」だからです。

しかし、これだけだと「田中さんの部署が知りたいのに、なぜ『4行目』と直接数字を入れないといけないの?」と疑問に思いますよね。
その通りです。そこで、いよいよMATCH関数が登場します。

最強タッグ!INDEX関数とMATCH関数を組み合わせる

ここが本題です。INDEX関数の「行番号」や「列番号」を、MATCH関数を使って自動的に探し出すことで、この2つの関数は最強の検索ツールに進化します。

「MATCH関数で探したい人の行番号を調べて、その番号をINDEX関数に教えてあげて、欲しい情報を取り出してもらう」という連携プレーです。

【具体例】氏名から社員番号を検索する(VLOOKUPではできない左方向への検索)

では、F11セルに入力した氏名をもとに、その人の社員番号(A列)を検索してみましょう。これは検索したい値(氏名)よりも左側にあるデータを取り出すため、VLOOKUP関数ではできません。

G11セルに、以下の数式を入力します。

=INDEX(A:A, MATCH(F11, B:B, 0))

すると、F11に入力された「田中 太郎」さんの社員番号である「1003」が正しく表示されます。

この数式の意味は、
「まずMATCH関数が、F11セルの値(田中 太郎)をB列から探し、それが4番目にあることを見つけます。
次にINDEX関数が、その『4』という行番号を使って、A列の4番目のデータである『1003』を取り出す」
となります。

これで、氏名を入力するだけで、対応する社員番号を自動で表示できるようになりました!

VLOOKUP、XLOOKUPとの比較と使い分け

では、VLOOKUP関数や最新のXLOOKUP関数と比べて、INDEX & MATCHはどのような特徴があるのでしょうか。

関数メリットデメリット
VLOOKUP・構文がシンプルで分かりやすい
・手軽に使える
・検索範囲の一番左の列しか検索できない
・列の挿入/削除で数式が壊れることがある
・処理が比較的遅い
INDEX & MATCH・検索範囲のどの列でも検索できる(左方向もOK)
・列の挿入/削除に強い
・処理が比較的速い
・2つの関数を組み合わせるため、数式が長くなる
・少し複雑に感じるかもしれない
XLOOKUP・VLOOKUPの手軽さとINDEX & MATCHの柔軟性を両立
・エラー処理も簡単
・デフォルトで完全一致
・新しいバージョンのExcel(Microsoft 365など)でしか使えない

【結論】どの関数を使うべき?

  • 使える環境なら、迷わずXLOOKUPを使いましょう。当ブログで何度もご紹介している通り、最も高機能で使いやすいです。
  • 古いバージョンのExcelや、他人とファイルを共有する可能性がある場合は、INDEX & MATCHを覚えておくと安心です。VLOOKUPの弱点をすべてカバーできます。
  • VLOOKUPは、INDEX & MATCHやXLOOKUPを学ぶまでのつなぎ、または非常にシンプルな表で手早く検索したい場合に限定して使うのが良いでしょう。

まとめ

今回は、INDEX関数とMATCH関数の組み合わせについて解説しました。

最初は少し複雑に感じるかもしれませんが、「MATCHで場所を探し、INDEXでデータを取り出す」というそれぞれの役割を理解すれば、決して難しいものではありません。
むしろ、この組み合わせを使いこなせるようになると、Excelでのデータ処理能力が格段に向上します。

当ブログでは、これからも業務効率を飛躍させるXLOOKUP関数を推奨していきます。しかし、その土台となっているINDEX & MATCH関数を理解しておくことは、Excelというツールをより深く、そして柔軟に使いこなすための揺ぎない基礎となります。

社労士事務所ぽけっとでは、給与計算や労務管理に関するご相談はもちろん、こうした日々の業務効率化に繋がるIT活用のご相談も承っております。
お困りのことがございましたら、お気軽にお問い合わせください。


【免責事項】
本記事の内容は、作成日時点の情報に基づいています。情報の正確性については万全を期しておりますが、その内容を保証するものではありません。本記事の情報を利用して生じたいかなる損害についても、当事務所は一切の責任を負いかねますので、あらかじめご了承ください。