INDEX-MATCH-MATCHで双方向検索を行う
行と列の一致が交差する位置の値を検索します。
「INDEX-MATCH-MATCHで双方向検索を行う」はCoddyKit上の無料Excel Formulas Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはExcel Formulas Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Excel Formulas Academyコースには全4レッスンが含まれています。
2方向検索の問題
左側に地域が縦に並び、上部に月が横に並ぶ月別売上のグリッドを想像してください。選択した地域と月が交差する位置の数値を取得したいとします。
通常の検索では、1方向だけを検索して値を見つけます。一方、2方向検索では縦と横の両方を同時に検索し、正しい行と列を見つけて、その交差位置にある値を返します。
この処理に使われる古典的な方法が、2つのMATCHと組み合わせたINDEXで、一般にINDEX-MATCH-MATCHと書かれます。
まとめ:INDEXの動作
INDEXは、位置を指定して範囲から値を返します。完全な形式はINDEX(array, row_num, column_num)です。
セルのブロック、行番号、列番号を渡すと、その位置にある値を返します。たとえばB2から始まるグリッドで行3、列2を指定すると、そのブロック内で3行下、2列右にある値が返されます。
重要なのは、INDEXが必要とするのは位置であり、ラベルではないという点です。その位置を提供するのがMATCHです。
=INDEX(B2:E5, 3, 2)まとめ:MATCHの動作
MATCHは、1つの行または列の中で値の位置を検索します。形式はMATCH(lookup_value, lookup_array, match_type)です。
一致方法には0を指定して完全一致にします。結果は数値で、1から数えた値の位置を表します。
「East」が範囲A2:A5の2番目の項目なら、MATCHは2を返します。この2をINDEXの行番号として使えます。
=MATCH("East", A2:A5, 0)2つのMATCHを使う考え方
2方向検索では、MATCHを2回実行します:
- 1つ目のMATCHで、地域が何行目にあるかを検索します。
- 2つ目のMATCHで、月が何列目にあるかを検索します。
次に、その2つの数値をINDEXに渡します。行用のMATCHはラベルの縦方向の範囲を検索し、列用のMATCHは見出しの横方向の範囲を検索します。
結果として、その行と列が交差する1つのセルが返されます。
グリッドを設定する
次のレイアウトを考えてみましょう。地域ラベルはA2:A5(East、West、North、South)にあり、月の見出しはB1:D1(Jan、Feb、Mar)にあります。実際の売上数値はB2:D5に入力されています。
検索を制御する入力セルは2つあります。G1には検索する地域を、G2には検索する月を入力します。
目的は、G1とG2を読み取り、B2:D5から一致する売上額を返す1つの数式を作ることです。
行のMATCHを作成する
まず地域を特定します。MATCHで、縦方向のラベル一覧A2:A5からG1に入力された値を検索します。
G1に「North」が含まれ、Northが3番目のラベルなら、このMATCHは3を返します。
この数値によって、INDEXがデータブロックのどの行を読み取るかが決まります。データではなく、ラベルだけを含むA2:A5を検索している点に注目してください。これにより、位置3がデータの3行目と対応します。
=MATCH(G1, A2:A5, 0)列のMATCHを作成する
次に月を特定します。このMATCHでは、横方向の見出し行B1:D1からG2の値を検索します。
G2に「Feb」が含まれ、Febが2番目の見出しなら、MATCHは2を返します。
この数値がINDEXの列位置になります。行の場合と同様に、見出しだけを含むB1:D1を検索するため、その位置がB2:D5のデータ列と対応します。
=MATCH(G2, B1:D1, 0)すべてを組み合わせる
ここで、2つのMATCHをINDEXの中に組み込みます。データブロックB2:D5が配列、行のMATCHが行番号、列のMATCHが列番号を指定します。
G1が「North」、G2が「Feb」の場合、行のMATCHは3、列のMATCHは2を返すため、INDEXはB2:D5の3行目、2列目の値を返します。
これで完全な2方向検索の数式になります。
=INDEX(B2:D5, MATCH(G1, A2:A5, 0), MATCH(G2, B1:D1, 0))計算の流れを確認する
B2:D5に、Northの行としてJan 50、Feb 80、Mar 65が入っているとします。
- MATCH("North", A2:A5, 0)は3を返します。
- MATCH("Feb", B1:D1, 0)は2を返します。
- INDEX(B2:D5, 3, 2)は3行目、2列目を読み取り、80を返します。
G1を「East」に変更したり、G2を「Mar」に変更したりすると、数式全体がすぐに再計算されます。これが、2つのMATCH検索を使ってINDEXを動かす強みです。
VLOOKUPだけではいけない理由
VLOOKUPは最初の列だけを検索し、そこから右へ固定数の列だけ離れた位置にある値を返します。月を切り替えるには、列番号を自分でハードコードするか計算する必要があります。
INDEX-MATCH-MATCHでは、行と列の両方をラベルによって動的に選択できます。列の順序を入れ替えたり、新しい月を追加したりしても、固定数ではなく見出しのテキストを照合するため、数式はそのまま機能します。
範囲のずれを防ぐ
最もよくある間違いは、範囲が一致していないことです。行のMATCH範囲はINDEXのデータブロックと同じ高さでなければならず、列のMATCH範囲は同じ幅でなければなりません。
ここではA2:A5が4行で、B2:D5も4行なので、MATCHの結果が3なら、実際にデータの3行目を意味します。誤って見出しを含むA1:A5を検索すると、位置が1行ずれて、間違ったセルが返されます。
=INDEX(B2:D5, MATCH(G1, A2:A5, 0), MATCH(G2, B1:D1, 0))クイックチェック
2方向検索のパターンを理解できているか確認しましょう。
レッスンのまとめ
2方向検索のパターンを学びました。
- INDEXは、ブロック内の行位置と列位置にある値を返します。
- 1つ目のMATCHは、縦方向のラベルを検索して行を見つけます。
- 2つ目のMATCHは、横方向の見出しを検索して列を見つけます。
組み合わせた数式=INDEX(data, MATCH(row), MATCH(col))は2つの入力を読み取り、それらが交差する位置の値を返します。位置がずれないよう、MATCHの範囲はデータブロックと同じサイズにしてください。
=INDEX(B2:D5, MATCH(G1, A2:A5, 0), MATCH(G2, B1:D1, 0))AI チューターと学ぶ Excel — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「INDEX-MATCH-MATCHで双方向検索を行う」レッスンは無料ですか?
はい。「INDEX-MATCH-MATCHで双方向検索を行う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Excel Formulas Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Excel Formulas Academyコースには全4レッスンが含まれています。
「INDEX-MATCH-MATCHで双方向検索を行う」で何を学びますか?
行と列の一致が交差する位置の値を検索します。 ブラウザで直接実行するハンズオンコードでExcel Formulas Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Excel Formulas Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのExcel Formulas Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「INDEX-MATCH-MATCHで双方向検索を行う」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このExcel Formulas Academyレッスンでコードを書いて実行できますか?
はい。すべてのExcel Formulas Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- INDEX-MATCH-MATCHで双方向検索を行う
- 最後に一致する値を検索する
- INDEX-MATCHで複数条件検索を行う
- 段階表で近似一致を使う