VLOOKUPを超える!INDEX-MATCH関数で自由自在なデータ検索

【Excel INDEX-MATCH関数】使い方完全ガイド|VLOOKUPを超える検索・照合テクニック

【Excel INDEX-MATCH関数】使い方完全ガイド|VLOOKUPを超える検索・照合テクニック

INDEX-MATCH関数とは?VLOOKUPを超える万能検索機能

INDEX-MATCH関数は、ExcelでVLOOKUP関数では実現できない左方向検索や複数条件検索を可能にする強力な検索手法です。社員番号から部署名を取得したい、商品名から商品コードを逆引きしたい、複数の条件を満たすデータを検索したいといった作業を効率化できます。

この記事では、Excel初心者の方でも分かりやすくINDEX-MATCH関数の使い方を解説します。基本的な構文から実践的な応用例、VLOOKUPとの違い、よくあるエラーの対処法まで、実際の業務で役立つ内容をお届けします。

VLOOKUPの制限を突破する次世代の検索関数で、Excel作業の効率化を一気に進めましょう!早速やっていきましょう。

【実践例】商品名から商品コードを逆引き検索

売上データに商品名が入力されているが、商品コードが表示されていない。別途用意された商品マスタから商品コードを自動で取得したい場合の解決方法をご紹介します。VLOOKUPでは不可能な左方向検索を実現します。

売上データ(Sheet1)
A B C D
日付 商品名 商品コード 売上金額
2024/1/15 ノートパソコン ←ここに商品コードを表示したい 75,000
2024/1/16 キーボード ←ここに商品コードを表示したい 4,500
商品マスタ(Sheet2)
A B C
商品コード 商品名 単価
P001 ノートパソコン 75,000
P002 マウス 2,500
P003 キーボード 4,500

INDEX-MATCH関数の基本構文【覚えるべき3つの要素】

INDEX-MATCH関数の構成要素:

  1. INDEX関数: 指定した範囲の指定した行から値を取得
  2. MATCH関数: 検索値が範囲の何番目にあるかを特定
  3. 組み合わせ: MATCHで位置を特定→INDEXで値を取得
=INDEX(取得したい値の範囲, MATCH(検索値, 検索範囲, 0)) // 基本構文:3つの要素で構成
VLOOKUPとINDEX-MATCHの比較
機能 VLOOKUP INDEX-MATCH
検索方向 右方向のみ 左右どちらでも可能
列の挿入・削除 エラーになりやすい 影響を受けにくい
処理速度 やや遅い 高速
複数条件検索 困難 比較的簡単

【初心者向け】INDEX-MATCH関数の基本的な使い方

まず初心者の方におすすめの基本的な書き方は下記の通りです。
ただし、この書き方ではコピペ時に問題が発生するので、より実用的な書き方も後ほど説明していきます。

=INDEX(Sheet2!A:A, MATCH(B2, Sheet2!B:B, 0)) // 商品名「ノートパソコン」から商品コード「P001」を取得

上記の式の詳細解説:

  • Sheet2!A:A: 取得したい商品コードが入力されている列(A列全体)
  • B2: 検索値(商品名「ノートパソコン」が入力されているセル)
  • Sheet2!B:B: 検索対象の商品名が入力されている列(B列全体)
  • 0: 完全一致で検索(通常は0を使用)

⚠️ 注意:上記の式では範囲が固定されていないため、コピペ時に問題が発生します。

【重要】絶対参照と相対参照|コピペで失敗しない書き方

先ほどの式をそのまま下の行にコピー&ペーストすると、参照範囲がずれてしまいます。これはExcelでよくある失敗パターンです。

❌ 問題のある書き方(コピペでエラーになる)

=INDEX(Sheet2!A:A, MATCH(B2, Sheet2!B:B, 0)) // この書き方だと下の行にコピペした際に範囲がずれる

✅ 正しい書き方(コピペしても正常動作)

=INDEX(Sheet2!$A:$A, MATCH(B2, Sheet2!$B:$B, 0)) // 検索範囲を絶対参照($)で固定、検索値は相対参照

検索値(B2)は相対参照でずれて欲しいですが、検索範囲(Sheet2!A:A、Sheet2!B:B)は固定したいので、「$」記号を使って絶対参照にします。

✓ これで下の行にコピペしても、検索範囲が正しく固定されます!

業務効率化のカギは、一度作った数式を他のセルに正しくコピペできることです。

【応用テクニック】複数の項目を一度に取得する方法

商品コードだけでなく、単価も一緒に取得したい場合の実践的な書き方をご紹介します。業務では、このように複数の項目を同時に取得することがよくあります。

A B C D E
日付 商品名 商品コード 単価 売上金額
2024/1/15 ノートパソコン P001 75,000 75,000
// C2セル(商品コード取得) =INDEX(Sheet2!$A:$A, MATCH($B2, Sheet2!$B:$B, 0)) // D2セル(単価取得) =INDEX(Sheet2!$C:$C, MATCH($B2, Sheet2!$B:$B, 0))

取得したい列を変えることで、同じ検索値から異なる列の値を取得できます。これはデータベース的な使い方で、業務効率化に非常に有効です。

【プロ級】最も効率的なINDEX-MATCH関数の書き方

業務で実際に使える最適解をご紹介します。範囲を具体的に指定し、列と行の絶対参照を適切に使い分けることで、どの方向にコピペしても正しく動作する数式を作れます。

🏆 最適化された数式

=INDEX(Sheet2!$A$2:$A$100, MATCH($B2, Sheet2!$B$2:$B$100, 0)) // 商品コード取得用の最適化された数式

最適化された数式の解説:

  • $B2: 検索値の列は固定($B)、行は相対参照(2)→ 縦方向のコピペに対応
  • Sheet2!$A$2:$A$100: 取得範囲は完全固定 → どの方向にコピペしても範囲は変わらない
  • Sheet2!$B$2:$B$100: 検索範囲は完全固定 → 安定した検索が可能
  • 0: 完全一致検索で確実にデータを取得

✓ この形にすることで、横方向(異なる取得列)にも縦方向(異なるデータ行)にも正しくコピペできます!

業務効率化の秘訣は、一つの完璧な数式を作って、それを様々な場所で再利用することです。

【トラブル解決】INDEX-MATCHでよくあるエラーと対処法

INDEX-MATCH関数を使っていて「うまく動かない」という場合の、よくあるエラーと解決方法をご紹介します。

❌ #N/A エラー:検索値が見つからない場合

原因と対処法:

  • 検索値のスペルミス → 商品名やIDに間違いがないか確認
  • 全角・半角の違い → 数字や英字の全角・半角を統一
  • 前後の空白 → TRIM関数で空白を除去
  • 検索範囲にデータがない → マスタデータに該当項目があるか確認
  • MATCH関数の第3引数 → 通常は0(完全一致)を使用

❌ #REF! エラー:範囲の指定ミス

原因と対処法:

  • 取得範囲と検索範囲の行数が一致しない → 範囲を同じ行数に調整
  • シート名の指定ミス → シート名が正しく入力されているか確認
  • 削除された範囲を参照 → 範囲が存在するか確認

【おすすめ】IFERROR関数との組み合わせでエラー表示を改善:

=IFERROR(INDEX(Sheet2!$A$2:$A$100, MATCH($B2, Sheet2!$B$2:$B$100, 0)), "該当データなし") // エラー時に分かりやすいメッセージを表示

エラーが発生した場合に「該当データなし」と分かりやすく表示されます。業務用の資料では、このようなユーザーフレンドリーな表示が重要です。

まとめ:INDEX-MATCH関数をマスターして業務効率化を実現

INDEX-MATCH関数の重要ポイント:

  • 💡使用場面: VLOOKUPでは実現できない左方向検索や複数条件検索を行いたいとき
  • 📝基本構文: =INDEX(取得範囲, MATCH(検索値, 検索範囲, 0))
  • 🔧実用的な書き方: =INDEX(Sheet2!$A$2:$A$100, MATCH($B2, Sheet2!$B$2:$B$100, 0))
  • 効率化のコツ: 絶対参照($)を使い分けてコピペしやすい数式を作成
  • 🛡️エラー対策: IFERROR関数と組み合わせて分かりやすいエラー表示を設定
  • 📊応用活用: 商品マスタ、顧客リスト、社員データベースなど様々な場面で活用可能

【実務での活用例】

商品管理

商品名から商品コードを逆引き検索

顧客管理

会社名から顧客コード・担当者名を取得

人事管理

社員名から社員番号・部署名を検索

請求書作成

サービス名から単価・税率を自動入力

在庫管理

商品情報の双方向検索

売上分析

複数条件での売上データ抽出

INDEX-MATCH関数は、VLOOKUPの制限を突破し、Excel業務の効率化において最も重要な関数の一つです。ぜひ今回の内容を参考に、実際の業務で活用してみてください。データの照合・検索作業が格段に効率化され、手作業によるミスも大幅に減らせますよ!

最初は少し複雑に感じるかもしれませんが、何度も練習することで必ず使いこなせるようになります。まずは簡単な例から始めて、徐々に複雑な業務にも応用してい

コメントを残す