INDEX関数 × MATCH関数の使い方完全ガイド

エクセル

Excelで「ある条件に合うデータを取り出したい」と思ったとき、多くの人が最初に思い浮かべるのは VLOOKUP関数 ではないでしょうか。

しかし、実務で使い込んでいくと VLOOKUP には限界があります。そこで真価を発揮するのが、今回ご紹介する INDEX関数MATCH関数 の組み合わせです。

「なんだか難しそう…」と思った方、ご安心ください。この記事では、Excelを触り始めたばかりの方でも理解できるように、ひとつずつ丁寧に解説していきます。


1. まずは単独で理解しよう ― INDEX関数とは?

INDEX関数の役割

ひとことで言うと、INDEX関数は 「表の中から、◯行目・◯列目にある値を取り出す」 ための関数です。

座席表を思い浮かべてください。「3列目の2番目の席」と言われれば、誰が座っているか特定できますよね。INDEX関数はまさにそれと同じ動きをします。

基本の書き方

=INDEX(範囲, 行番号, 列番号)
引数意味
範囲データが入っている表全体
行番号上から何番目か
列番号左から何番目か

例1:1列だけの表から取り出す

下のような商品リストがあるとします。

A列
1行目りんご
2行目みかん
3行目バナナ
4行目ぶどう

「2番目の商品(=みかん)」を取り出したいときは、こう書きます。

excel

=INDEX(A1:A4, 2)
→ 結果:みかん

A1からA4の範囲のうち、上から2番目を取り出した、というシンプルな動きです。

例2:表(行と列)から取り出す

今度はもう少し本格的な表です。

A列(商品名)B列(価格)C列(在庫)
1行目りんご10050
2行目みかん8030
3行目バナナ12020

「2行目・3列目の値(=みかんの在庫)」を取り出すには:

excel

=INDEX(A1:C3, 2, 3)
→ 結果:30

このように、INDEX関数は 「住所」を指定すれば、その場所にある値を持ってきてくれる 関数なのです。


2. もう一つの主役 ― MATCH関数とは?

MATCH関数の役割

INDEX関数は「◯行目・◯列目」と数字で指定する必要がありました。でも、実務では「『みかん』が何行目にあるか」なんて、毎回数えていられません。

そこで登場するのが MATCH関数 です。MATCH関数は 「探したい値が、範囲の中で何番目にあるかを教えてくれる」 関数です。

基本の書き方

=MATCH(探したい値, 範囲, 照合の種類)
引数意味
探したい値見つけたい文字や数字
範囲探す対象の列または行
照合の種類基本は「0」(完全一致)を指定

💡 ポイント:照合の種類は「0」と覚えてOK。1や-1もありますが、初心者のうちは「0:完全一致」だけ使えれば困りません。

例1:列の中から探す

A列
1行目りんご
2行目みかん
3行目バナナ
4行目ぶどう

「『バナナ』は何番目にある?」と聞きたいとき:

excel

=MATCH("バナナ", A1:A4, 0)
→ 結果:3

A列の中で、バナナは上から3番目にある、という意味です。

例2:見出し行から探す

A列B列C列
1行目商品名価格在庫

「『在庫』という見出しは何列目?」と聞きたいとき:

excel

=MATCH("在庫", A1:C1, 0)
→ 結果:3

MATCH関数は 「位置(番号)」を返す関数 だと覚えておきましょう。


3. いよいよ本題 ― INDEX × MATCHの組み合わせ

ここまでの2つを合体させると、すごいことが起きます。

  • MATCH関数:値の「位置」を見つける
  • INDEX関数:位置から「値」を取り出す

つまり、MATCHが調べた位置を、INDEXに渡してあげる という連携プレーです。

基本パターン

=INDEX(取り出したい列, MATCH(検索値, 検索する列, 0))

例1:商品名から価格を取り出す

A列(商品名)B列(価格)
1行目りんご100
2行目みかん80
3行目バナナ120
4行目ぶどう300

「『バナナ』の価格を知りたい」場合:

excel

=INDEX(B1:B4, MATCH("バナナ", A1:A4, 0))
→ 結果:120

動きを分解してみましょう:

  1. MATCH("バナナ", A1:A4, 0) → 「バナナ」は3番目だから 3 を返す
  2. INDEX(B1:B4, 3) → B列の3番目を取り出して 120 を返す

このように、2つの関数が連携して目的の値を取り出してくれます。

例2:社員番号から名前を取り出す

A列(社員番号)B列(氏名)C列(部署)
1行目1001佐藤営業部
2行目1002鈴木経理部
3行目1003高橋総務部
4行目1004田中営業部

「社員番号 1003 の人の氏名は?」を調べる:

excel

=INDEX(B1:B4, MATCH(1003, A1:A4, 0))
→ 結果:高橋

例3:部署を取り出したいとき(C列が答え)

同じ表で「社員番号 1002 の部署は?」を調べる:

excel

=INDEX(C1:C4, MATCH(1002, A1:A4, 0))
→ 結果:経理部

取り出したい列を変えるだけで、簡単に応用できます。


4. なぜVLOOKUPより便利なの?

「VLOOKUPでも同じことできるのでは?」と思った方、鋭いです。確かに似たことができます。しかし、INDEX×MATCHには次のような VLOOKUPにない強み があります。

強み①:左方向にも検索できる

VLOOKUPは「検索する列」より右側の列しか取り出せません。一方、INDEX×MATCHは どの方向でもOK です。

例えば、こんな表で「氏名から社員番号を逆引きしたい」場合:

A列(社員番号)B列(氏名)
1行目1001佐藤
2行目1002鈴木
3行目1003高橋

excel

=INDEX(A1:A3, MATCH("鈴木", B1:B3, 0))
→ 結果:1002

VLOOKUPではこの「右から左への検索」はできません。

強み②:列を挿入しても壊れない

VLOOKUPは「左から何列目」と数字で指定するため、表の途中に列を追加すると数式が壊れがちです。INDEX×MATCHは「列そのもの」を指定するので、列の挿入・削除に強いのです。

強み③:動作が軽い

大量データを扱う場合、INDEX×MATCHのほうがVLOOKUPより処理が速いと言われています。


5. 実践例:縦横どちらからも検索する(クロス検索)

INDEX×MATCHの真骨頂、「縦と横の両方から検索」 をご紹介します。

下のような月別売上表があるとします。

A列B列(4月)C列(5月)D列(6月)
1行目商品名4月5月6月
2行目りんご1,0001,2001,500
3行目みかん8009001,100
4行目バナナ1,5001,7002,000

「みかんの5月の売上は?」を取り出すには:

excel

=INDEX(A1:D4, MATCH("みかん", A1:A4, 0), MATCH("5月", A1:D1, 0))
→ 結果:900

動きの解説:

  1. MATCH("みかん", A1:A4, 0) → みかんは3行目 → 3
  2. MATCH("5月", A1:D1, 0) → 5月は3列目 → 3
  3. INDEX(A1:D4, 3, 3) → 表の3行3列目 → 900

縦と横を同時に検索できる、これがVLOOKUPでは難しい高度な使い方です。


6. つまずきやすいポイント

ポイント①:範囲はしっかり揃える

INDEX関数の取り出し範囲と、MATCH関数の検索範囲は 行数を揃える のが鉄則です。

❌ 間違い:

excel

=INDEX(B1:B10, MATCH("バナナ", A1:A4, 0))

範囲がズレているため、正しく取り出せません。

⭕ 正解:

excel

=INDEX(B1:B4, MATCH("バナナ", A1:A4, 0))

ポイント②:照合の種類は「0」を忘れない

MATCH関数の最後の引数「0」を省略すると、想定外の結果になることがあります。完全一致で検索したいなら 必ず「0」をつける ようにしましょう。

ポイント③:絶対参照を上手に使う

数式を下の行にコピーしたい場合は、範囲を 絶対参照($マーク) にします。

excel

=INDEX($B$1:$B$4, MATCH(D2, $A$1:$A$4, 0))

これで数式をコピーしても、参照範囲がズレません。


7. まとめ

関数役割
INDEX指定した位置の値を取り出す
MATCH値が何番目にあるかを返す
INDEX × MATCH検索して取り出す万能コンビ

最初は「2つの関数を組み合わせるなんて難しそう…」と感じるかもしれませんが、一度仕組みを理解してしまえば、VLOOKUPよりもずっと柔軟に使えるようになります。

ぜひ手元のExcelで、実際に手を動かしながら試してみてください。


💼 経理マンの一言

経理の現場では、毎月のように 「勘定科目別の集計表」「部門別予実管理表」「取引先別の売上明細」 など、似たような表をひっくり返してデータを引っ張る作業が発生します。

私が新人の頃はVLOOKUPばかり使っていましたが、ある日、先輩から「経理ならINDEX×MATCHを覚えておけ」と言われました。理由を聞くと、実務ではこんな場面が頻発するからだそうです。

  • 試算表のレイアウトが毎月微妙に変わる(列が増減する)
  • 取引先コードから過去の売上を逆引きしたい(右から左の検索)
  • 勘定科目×月のクロス集計から特定の値を引っ張りたい

VLOOKUPでは対応しきれないこれらの場面で、INDEX×MATCHは本当に頼りになります。最初は面倒に感じるかもしれませんが、決算の繁忙期に「列が一つズレただけで数式が全部壊れた…」という悲劇を防ぐためにも、今のうちにマスターしておくことを強くおすすめします。

経理という仕事は 「正確さ」と「スピード」 の両立が命です。INDEX×MATCHは、その両方を支えてくれる強力な味方になりますよ。

MOS Excel 365 Expert 対策テキスト&問題集
Amazonで富士通ラーニングメディアのMOS Excel 365 Expert 対策テキスト&問題集 (よくわかるマスター)。アマゾンならポイント還元本が多数。富士通ラーニングメディア作品ほか、お急ぎ便対象商品は当日お届けも可能。またMO…

コメント

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