INDEX MATCH関数の使い方【Excel】VLOOKUPの限界を超える検索術

INDEX MATCH 使い方 アイキャッチ画像 関数・数式

VLOOKUP関数で作成した売上管理表に列を1本追加した瞬間、すべての計算結果がエラーになったり、意図しない列の値を参照し始めたりして青ざめた経験はありませんか。企業の経理部門で15年以上、数千行に及ぶ決算データを扱ってきた実務家の視点から言えば、VLOOKUPの限界を突破し、より堅牢で柔軟なシートを作るための唯一の解が「INDEX関数」と「MATCH関数」の組み合わせです。

結論:INDEX MATCH 使い方とVLOOKUPより優れた数式の正体

結論からお伝えすると、INDEX MATCH 使い方の基本形は「=INDEX(取り出したい列, MATCH(検索値, 検索値が含まれる列, 0))」という形になります。VLOOKUP関数は「表の左端から右へ数えて何列目」という指定方法ですが、INDEX MATCHは「どの列から」「どの行の」データを取り出すかを独立して指定します。

この組み合わせが実務で圧倒的に有利な理由は、検索値が表のどこにあっても参照できる点と、列の挿入や削除に強い点にあります。経理の現場では、予算管理表や在庫リストのレイアウト変更が頻繁に行われますが、INDEX MATCHで組まれた数式は、列が移動しても自動的に参照先が追従するため、メンテナンスの手間が大幅に削減されます。

INDEX MATCH 使い方 - 受注番号から左側にある顧客名を参照しているINDEX MATCHの数式例
受注番号から左側にある顧客名を参照しているINDEX MATCHの数式例

ポイント: INDEX MATCHは「住所」を指定するイメージです。INDEXで「どのビル(列)」かを選び、MATCHで「何階(行)」かを特定します。VLOOKUPのような「左端からの距離」という制約はありません。

数式の仕組みをステップごとに理解する

INDEX MATCHを使いこなすには、2つの関数それぞれの役割を切り分けて考えるのが近道です。多くの研修で教えていると、これらを一気に覚えようとして混乱する受講生を多く見かけますが、実は非常にシンプルな役割分担になっています。

INDEX関数:指定した場所の「値」を抜き出す

INDEX関数は、指定した範囲の中から「上から何行目」にあるデータを取り出す関数です。実務では、1列だけを選択して使うのが最も一般的です。
書式:`=INDEX(範囲, 行番号)`

例えば、社員名簿の「氏名」列(C2:C100)が範囲で、行番号が「5」であれば、5行目の社員名が返されます。
参照:[Microsoft公式サイト INDEX 関数](https://support.microsoft.com/ja-jp/office/index-%E9%96%A2%E6%95%B0-a5dcf0c4-fdc4-4d15-8c83-b700cd1f282b)

MATCH関数:探したい値が「何行目」にあるか調べる

MATCH関数は、検索したい値が指定した範囲の「上から数えて何番目」にあるかを数字で返します。
書式:`=MATCH(検索値, 範囲, 照合の種類)`

「商品コード A-001 はリストの何行目にあるか」を特定するのがMATCHの役割です。実務では、照合の種類は必ず「0(完全一致)」を使います。
参照:[Microsoft公式サイト MATCH 関数](https://support.microsoft.com/ja-jp/office/match-%E9%96%A2%E6%95%B0-e8dffd45-9a87-4386-af53-5d5180f3052f)

二つを組み合わせる(ネストする)

MATCH関数で求めた「行番号」を、そのままINDEX関数の「行番号」の引数に代入します。これがINDEX MATCHの全貌です。

INDEX MATCH 使い方 - MATCH関数で求めた行番号がINDEX関数の引数に入り、データが抽出される図解
MATCH関数で求めた行番号がINDEX関数の引数に入り、データが抽出される図解

実務での活用シーン:売上管理と社員名簿の紐付け

具体的な実務シナリオで考えてみましょう。営業管理部で「請求書発行リスト」を作成する際、手元には「受注番号」しかなく、マスタデータでは「受注番号」の左側に「顧客名」が記載されているようなケースです。

検索値より「左側」のデータを抽出する

VLOOKUPでは、検索値(受注番号)より左側にある列(顧客名)は参照できませんが、INDEX MATCHなら簡単です。

1. 取り出したいデータ(顧客名)の列をINDEX関数の範囲に指定します。
2. 検索値(受注番号)がマスタの何行目にあるかをMATCH関数で特定します。
3. 二つを合体させます。

例:`=INDEX(マスタ!$A$2:$A$500, MATCH($B2, マスタ!$C$2:$C$500, 0))`
※マスタシートのA列が顧客名、C列が受注番号の場合

INDEX MATCH 使い方 - 受注番号B2をキーにしてマスタシートの左側にある顧客名を表示した画面
受注番号B2をキーにしてマスタシートの左側にある顧客名を表示した画面

部署名と役職を組み合わせた複数条件検索

実務でよく見かけるのは、「営業部」の「課長」など、複数の条件を満たす値を抽出したい場面です。筆者の経験では、このようなケースで補助列(部署と役職を結合した列)を作って対応している方を多く見かけますが、INDEX MATCHなら補助列なしで対応可能です。

`{=INDEX(給与テーブル!$D$2:$D$100, MATCH(1, (給与テーブル!$A$2:$A$100=”営業部”)*(給与テーブル!$B$2:$B$100=”課長”), 0))}`
(※Microsoft 365やExcel 2021以降であれば、配列数式として確定させなくても動作します)

注意点: 複数条件の配列数式は、データ量が多いシートで多用すると計算が重くなる原因になります。数千行を超える場合は、データの構造そのものを見直すか、Power Queryの利用を検討してください。

初心者が陥るトラブルと解決策

実務でINDEX MATCHを使い始めたばかりの際、必ずと言っていいほど直面するトラブルがあります。これらは筆者が社内研修で講師を務める際、受講生の8割が一度は経験する「つまずきポイント」です。

#N/Aエラーが消えない原因

MATCH関数で「0(完全一致)」を指定し忘れているケースが最も多いです。また、意外と盲点なのが「データ型の不一致」です。マスタ側の「社員番号」が数値形式なのに、検索値側のセルが文字列形式になっていると、見た目が同じでもExcelは別物と判断してエラーを出します。

範囲のズレによる誤表示

INDEX関数の範囲(例:A2:A100)と、MATCH関数の範囲(例:C2:C100)の行数がズレていると、抽出結果が1行ずつ上下にズレて表示されます。経理の現場では、この設定ミスに気づかず、誤った単価で請求金額を計算してしまうという恐ろしいミスに繋がりかねません。

INDEX MATCH 使い方 - INDEXとMATCHの範囲が1行ズレているために間違った値が表示されている比較画面
INDEXとMATCHの範囲が1行ズレているために間違った値が表示されている比較画面

ポイント: INDEXとMATCHの範囲(行の開始位置と終了位置)は必ず一致させてください。どちらも「2行目から100行目まで」といった具合に揃えるのが鉄則です。

実務家が教えるプロのコツ

15年間、毎日Excelと向き合ってきた中で辿り着いた、INDEX MATCHをより効率的に、そして安全に運用するためのテクニックをご紹介します。

「テーブル機能」との組み合わせで数式を可読化する

実務でINDEX MATCHを使うなら、参照先の範囲を「テーブル」に変換しておくことを強く推奨します。
`=INDEX(商品マスタ[単価], MATCH([@商品コード], 商品マスタ[コード], 0))`
このように記述することで、半年後に自分や他人がシートを見た際、どこから何を引用しているのかが一目で理解できるようになります。

絶対参照の切り替えをF4キーで瞬時に行う

MATCH関数の範囲を指定した直後に `F4` キーを押して、必ず絶対参照($マーク)にする癖をつけてください。オートフィルで数式を下にコピーした際、参照範囲が下にズレていくのは、初心者が最もやりがちなミスの一つです。

XLOOKUP関数との使い分け

最新のExcel(Microsoft 365やExcel 2021以降)を使っている環境であれば、XLOOKUP関数という選択肢もあります。XLOOKUPはINDEX MATCHの機能を一つの関数に集約したもので、非常に強力です。
しかし、取引先や社内の他部署が古いバージョンのExcelを使っている可能性がある場合、互換性を考慮してINDEX MATCHを選択するのが「仕事ができる人」の配慮です。

INDEX MATCH 使い方 - INDEX MATCHとXLOOKUPで同じ結果を表示し、数式の長さを比較した画面
INDEX MATCHとXLOOKUPで同じ結果を表示し、数式の長さを比較した画面

まとめ

INDEX MATCH 使い方は、一度構造を理解してしまえば、VLOOKUPには戻れないほどの利便性を提供してくれます。特にレイアウトの変更が激しい実務の現場において、その真価を発揮します。

– 検索値の「左側」にあるデータも自由に抽出できる
– 列の挿入や削除を行っても数式が壊れない
– INDEXで「取り出したい列」、MATCHで「探し出す行」を定義する
– 参照範囲の行数は必ず一致させる
– 将来的にはXLOOKUPへの移行も見据えつつ、互換性のためにINDEX MATCHを習得しておく

Excelは「目的のデータを正しく、速く取り出すこと」が実務における最大の使命です。INDEX MATCHをマスターして、エラーに怯える時間から解放され、より本質的な分析業務に時間を割けるようになりましょう。

コメント

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