【エクセル初心者脱出】VLOOKUP卒業宣言!INDEX×MATCHの合わせ技で “欲しい値” を一瞬抽出する方法

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. セルを選択
  2. データタブの入力規則
  3. リストを選んで、目的の範囲、今回は表の1月から5月を選択

あとはプルダウンで月度を選ぶだけです。

初心者あるある

「これ覚えたら一気にExcelマスター感」と結局INDEX×MATCHが最強って言い始める

テーブル化して構造化参照を活用すると行追加にも強い。
⚫︎入力規則のリストにテーブル列を指定し追加時もノーメンテ
⚫︎スライサー対応のテーブルに変換するとビジュアルも◎

エラー対策&メンテナンス術

検索ミスや未入力でも崩れない工夫

MATCHで見つからないと#N/Aエラーに。これを放置すると印象が悪いし、計算式も連動して壊れがち。そんなときはIFERRORで「代替メッセージ」を表示しよう。


=IFERROR(INDEX(参照範囲, MATCH(検索値, 検索範囲, 0)),"該当なし")

IFERROR関数の説明はVLOOKUP関数の記事の際に説明しています。


まとめ

VLOOKUP関数を覚えると、なんで検索値の左側は指定できないんだと思うはず。

特に、動的な列指定や2次元検索にはINDEX×MATCH関数がおすすめです。

VLOOKUPに合わせて覚えると、業務効率を大きく改善してくれるはずです。

最初は構文が少し長く感じるかもしれませんが、「壊れにくいExcel」を作れることが自信につながりますよ!

次は、「名前付き範囲」との連携も学ぶと、さらにステップアップできます!気になる方はそちらの記事もどうぞ。

コメント

コメントする

目次