【Excel神技】INDEX+MATCH+MATCHで縦横自在にデータを検索する方法
Excelで特定のデータを探す際、VLOOKUP関数は非常に便利ですが、行と列、つまり縦横二つの条件が交差する位置にあるデータを検索したい場合には対応できません。
しかし、Excelの強力な機能であるINDEX関数とMATCH関数を組み合わせることで、この二次元検索を実現できます。今回は、メニューの「麺」と「具」の組み合わせに応じて自動で「値段」を表示するシステムを例に、INDEX+MATCH+MATCHの構築方法を解説します。
1. 事前準備:プルダウンリスト(データ入力規則)の設定
数式を打つ前に、ユーザーが容易に「麺」と「具」を選択できるように、プルダウンリスト(データ入力規則のリスト)を設定します 。
設定手順
- 麺の選択肢の設定: 麺を選択するセルを選び、「データ」タブから「データ入力規則」を開きます。
- 「入力値の種類」を「リスト」にし、リストにしたい麺のエリア(例:うどん、そば、低糖面など)を選択します。
- 具の選択肢の設定: 同様に、具を選択するセルに対しても、具材のエリアを選択してリスト化します。
これにより、各セルがリストから選択可能となり、例えば「低糖質麺」と「きつね」などを選べるようになります。
2. コア機能:INDEX+MATCH+MATCHの数式構築
価格を表示させたいセルに、以下の手順で数式を入力していきます。
ステップ1:INDEXで価格配列を指定
最初にINDEX関数を使い、結果として取得したいデータ(この場合、価格)が格納されている範囲全体を指定します。
- 数式をコピーしても動かないように、指定した範囲はF4キーを押して絶対参照($マーク)にする必要があります。
=INDEX(価格表の範囲, ...
ステップ2:1つ目のMATCHで行(具材)の位置を特定
次に、INDEX関数の第2引数(行番号)として、1つ目のMATCH関数を使用します。これは、選択された「具」が価格表のどこに位置するか(何行目か)を特定するためです。
- 「具のヘッダー範囲」もF4キーで絶対参照にします。
=INDEX(価格表の範囲, MATCH(具の選択セル, 具のヘッダー範囲, 0), ...
ステップ3:2つ目のMATCHで列(麺)の位置を特定
さらに、INDEX関数の第3引数(列番号)として、2つ目のMATCH関数を使用します。これは、選択された「麺」が価格表のどこに位置するか(何列目か)を特定するためです 。
- 「麺のヘッダー範囲」もF4キーで絶対参照にします。
=INDEX(価格表の範囲, MATCH(具の選択セル, 具のヘッダー範囲, 0), MATCH(麺の選択セル, 麺のヘッダー範囲, 0))
完成例と動作確認
例えば、「低糖質麺」と「きつね」を選択した場合、MATCH関数は「きつねは2行目、低糖質麺は3列目」といった位置情報を受け渡します。そして、INDEX関数はその交差する場所の金額(520円)を返します。
動作確認された正しい組み合わせの例:
- うどん+天ぷら:650円
- そば+ごぼう天:510円
- 低糖質麺+かけ:420円
- 低糖質麺+きつね:520円
3. 応用:エラー処理の追加
数式をコピーした場合など、まだ「麺」や「具」が何も選ばれていない状態だと、数式がエラー(#N/Aなど)を表示してしまうことがあります 。
このエラーを防ぎ、何も入力されていない時には空白を表示させる処理を追加することで、見やすい表に仕上げます 。
完成した数式をIFERROR関数などで囲み、エラー発生時にカンマとダブルクォーテーション("")を追記することで、空白表示を実現します。
まとめ
INDEX+MATCH+MATCHの組み合わせは、VLOOKUPでは実現できない、二次元的な検索を可能にする強力なテクニックです。行と列の指定をMATCH関数に任せ、INDEX関数でその交差点の値を取り出すという仕組みを理解すれば、複雑なデータ管理も格段に効率化されます。
このテクニックは、まるで巨大な地図上の緯度(行)と経度(列)を指定して、目的の場所を特定するGPSのようなものです。データを縦横無尽に操作できるようになり、Excel作業の幅が大きく広がります。


