Excelで「値を検索したい」と思ったとき、まず教わるのがVLOOKUP関数。
でも、実際に使ってみると「右方向にしか探せない」「列番号をいちいち数えるのが面倒」「列の順番を変えたら式が壊れる」など、初心者泣かせの弱点がいくつもあります。
私も、VLOOKUPで作った書式が、他の人の列変更で見事に崩壊…。
上司から「また直しといて」と簡単に言われて、ひとりPCの前でため息をついた苦い記憶があります。
そんな私を救ってくれたのが、「INDEX関数」と「MATCH関数」の合わせ技。
VLOOKUPの欠点をしっかりカバーしながら、自由な検索ができるこのコンビは、実は初心者こそ覚えておきたい“最強ペア”なんです!

- INDEX と MATCH の基本構文
- VLOOKUP との決定的な違い
- 左方向検索&動的列指定のテクニック
- 2次元検索(行列同時マッチ)の作り方
- エラー対策&メンテが楽になる書き方
INDEX と MATCH ― まずは単独ワザを知ろう
INDEX関数の基本
INDEX関数 は「○行○列目の値を返す住所録」。セル範囲を地図、行列番号を座標と考えれば位置がすぐ頭に入ります。返り値はセル参照そのものなので、元の値が更新されれば自動で最新データを取得。これが “動的” と呼ばれるゆえんです。
=INDEX(範囲, 行番号, 列番号)
- 行・列どちらか省略可(1列・1行範囲の場合)

「範囲を絶対参照にし忘れて全セルずれた!」となりがち。
絶対参照はFn+F4(Windows)/Command+T(Mac)はできるので、範囲を固定しよう。
MATCH 関数は「検索位置」を返す名脇役
MATCH関数 は探したい値が範囲の何番目にあるかを返す関数。VLOOKUP の列番号を手入力していた人なら、「列が増減しても番号がズレない」便利さに感動間違いなし。
=MATCH(検索値,範囲,検索タイプ)
- 検索タイプを完全一致なら必ず「0」を指定
- 検索タイプが近似一致モード「1や-1」で価格帯検索や階層分類にも応用でき、データ分析の幅が広がります。



検索タイプを近似一致で使用すると、予期せぬ検索値を引っ張ってくるので、一定の使い方以外は検索タイプを「0」で使用しよう。
VLOOKUP を超える“左右自在”検索 ー INDEX × MATCH ー
INDEXとMATCHの関係は“地図と座標”
INDEX関数は「表のどこを見るか」、MATCH関数は「その場所がどこかを探す役割」。
この2つを組み合わせることで、VLOOKUP関数ではできない“左方向の検索”が可能に。
構文はやや長いですが、慣れればこちらのほうが柔軟です。特に列の追加や並び替えに強く、シート設計が変わっても壊れにくいのが魅力です。


=INDEX(参照範囲, MATCH(検索値, 検索範囲, 0))
- 検索値:探したいデータ(例:社員名など)
- 検索範囲:検索値を探す列(例:A列)
- 参照範囲:結果を返す列(例:B列)
画像では、各店舗の月度別売上データから4月度を抜き出すところを表しています。この場合は各店舗がそれぞれの列を表すので
INDEX(参照範囲, 列番号, MATCH(検索値, 検索範囲, 0))
列番号は1〜5で書くことができます。
次の行と列の2次元検索の作り方では店舗名もMATCH関数で表すことを説明しています。
VLOOKUP関数 との決定的な違い
比較項目 | VLOOKUP | INDEX+MATCH |
---|---|---|
検索方向 | 左端列から右のみ | 左右どちらでも自由 |
列の追加・並べ替え | 列番号がズレると壊れる | MATCHで列位置を自動取得 |
柔軟な検索条件 | 単一条件のみ | 複数条件も対応可(応用) |
2次元検索 | 非対応 | INDEX+MATCH+MATCHで可能 |
パフォーマンス(大量データ) | やや遅いこともある | 比較的高速に動作 |
改めていうと、VLOOKUP関数では「左端から右へ」しか検索できず、列の順番が変わると壊れやすいのが弱点。
一方、INDEXとMATCHを組み合わせれば、左右どちらの方向にも対応でき、列の追加や並べ替えにも対応できるので便利という話です。


行と列の2次元検索の作り方
2次元 Lookup!行×列で“交差セル”を抜き出す発想
売上表の「店舗 × 月別」のようなマトリクスでは、行番号と列番号をそれぞれ MATCH で取得し、INDEX(範囲, 行番号, 列番号) に渡せば一発。ピボットを作るまでもなくダッシュボードが作れます。
=INDEX(データ範囲, MATCH(検索値1, 行方向範囲, 0), MATCH(検索値2, 列方向範囲, 0))


これでコピペをしてVLOOKUP関数のように使えるし、検索値の左側もデータが欲しい場合も対応できます。
入力規則+MATCH でインタラクティブな表へ
セルのプルダウン(データの入力規則)と合わせれば、店舗や月を選ぶだけで自動更新する“動く表”が完成。会議で「おっ」と言わせる小ネタに。


データをまとめている表の4月のところを「月度を選ぶ」プルダウンに変えてみます。
やり方は簡単で
- セルを選択
- データタブの入力規則
- リストを選んで、目的の範囲、今回は表の1月から5月を選択
あとはプルダウンで月度を選ぶだけです。
初心者あるある
「これ覚えたら一気にExcelマスター感」と結局INDEX×MATCHが最強って言い始める



テーブル化して構造化参照を活用すると行追加にも強い。
⚫︎入力規則のリストにテーブル列を指定し追加時もノーメンテ
⚫︎スライサー対応のテーブルに変換するとビジュアルも◎
エラー対策&メンテナンス術
検索ミスや未入力でも崩れない工夫
MATCHで見つからないと#N/Aエラーに。これを放置すると印象が悪いし、計算式も連動して壊れがち。そんなときはIFERRORで「代替メッセージ」を表示しよう。
例=IFERROR(INDEX(参照範囲, MATCH(検索値, 検索範囲, 0)),"該当なし")
IFERROR関数の説明はVLOOKUP関数の記事の際に説明しています。


VLOOKUP関数を覚えると、なんで検索値の左側は指定できないんだと思うはず。
特に、動的な列指定や2次元検索にはINDEX×MATCH関数がおすすめです。
VLOOKUPに合わせて覚えると、業務効率を大きく改善してくれるはずです。
最初は構文が少し長く感じるかもしれませんが、「壊れにくいExcel」を作れることが自信につながりますよ!
次は、「名前付き範囲」との連携も学ぶと、さらにステップアップできます!気になる方はそちらの記事もどうぞ。


コメント