0Pricing
Excel Formulas Academy · レッスン

INDEXとMATCHを組み合わせる

MATCHで位置を取得し、その位置をINDEXに渡して動的に検索します。

「INDEXとMATCHを組み合わせる」はCoddyKit上の無料Excel Formulas Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはExcel Formulas Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Excel Formulas Academyコースには全4レッスンが含まれています。

理想的な組み合わせ

これで、検索を構成する2つの要素がわかりました。MATCHは値がどこにあるかを見つけ、INDEXはその位置にある値を返します。

この2つを組み合わせると、完全な検索ができます。MATCHで行を特定し、INDEXでその行の任意の列からデータを取得します。

仕組みがわかればパターンは簡単です。通常は行番号を入れるINDEXの場所に、MATCHを入れ子にします。

基本パターン

これから何度も使う形式は次のとおりです。

=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))

内側から順に読みます。まずMATCHが実行され、位置番号を返します。その番号がINDEXのrow_numになり、返す範囲から値が取得されます。

通常、返す範囲と検索範囲の行数は同じなので、一方の範囲の位置がもう一方の範囲にも対応します。

=INDEX(C2:C20, MATCH("Cherry", A2:A20, 0))

手順に沿った例

A列に商品名、C列に価格が入った表を想像してください。「Cherry」の価格を取得したいとします。

まずMATCHでCherryを検索します。=MATCH("Cherry", A2:A20, 0)の結果は、たとえば3になります。

次にINDEXでその3を使います。=INDEX(C2:C20, 3)は、C列の3番目の行にある価格を返します。

2つを入れ子にすると、1つの数式で結果を取得できます。=INDEX(C2:C20, MATCH("Cherry", A2:A20, 0))です。

=INDEX(C2:C20, MATCH("Cherry", A2:A20, 0))

セルを検索値として使う

学習中は「Cherry」をハードコードしても問題ありませんが、実際の数式では代わりにセルを参照します。検索語をE1に入力し、そのセルを参照します。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

これで、E1に入力した商品名の価格がすぐに返されます。Bananaと入力すればBananaの価格が返され、Dateと入力すれば結果が更新されます。

1つの数式が、入力セルだけで操作できる再利用可能な検索ツールになります。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

双方向検索のプレビュー

INDEXには列番号も指定できます。その番号を2つ目のMATCHで取得します。これにより、行と列が交差する位置の値を特定できます。

=INDEX(B2:E10, MATCH(G1, A2:A10, 0), MATCH(G2, B1:E1, 0))

最初のMATCHはA列のラベルから行を検索し、2つ目のMATCHは1行目の見出しから列を検索します。INDEXは、それらが交差するセルを返します。この高度なパターンについては、後で詳しく説明します。

=INDEX(A2:A20, MATCH(E1, C2:C20, 0))

別のフィールドを返す

戻り範囲によって、何が返されるかが決まります。同じキーで検索する場合、INDEXの範囲を変更するだけで、必要な列の値を取得できます。

顧客のメールアドレスを検索するには、=INDEX(D2:D50, MATCH(E1, A2:A50, 0))とします。

同じ顧客の都市名を検索するには、=INDEX(F2:F50, MATCH(E1, A2:A50, 0))とします。

MATCHの部分は変わりません。別の値を選ぶためにINDEXの範囲だけを変更します。

=INDEX(F2:F50, MATCH(E1, A2:A50, 0))

双方向検索のプレビュー

INDEX には列番号も指定できます。列番号は2つ目の MATCH で求めます。これにより、行と列が交差する位置の値を特定できます。

=INDEX(B2:E10, MATCH(G1, A2:A10, 0), MATCH(G2, B1:E1, 0))

最初の MATCH は A 列のラベルから行を特定し、2つ目の MATCH は 1 行目の見出しから列を特定します。INDEX は、それらが交差するセルを返します。この高度なパターンについては、後ほど詳しく学びます。

=INDEX(B2:E10, MATCH(G1, A2:A10, 0), MATCH(G2, B1:E1, 0))

範囲を揃える

位置を正しく対応させるには、検索範囲と戻り範囲の開始行を同じにし、高さも揃える必要があります。

MATCHがA2:A20(19行)を検索する一方で、INDEXがC2:C19(18行)から値を返すと、位置がずれて誤った結果になります。

確実な方法は、A2:A20とC2:C20のように、両方でまったく同じ行範囲を使うことです。A:AやC:Cのような列全体の参照を使えば、自動的に位置が揃います。

=INDEX(C:C, MATCH(E1, A:A, 0))

一致する値がない場合の処理

MATCHで検索値が見つからない場合、#N/Aが返され、INDEX-MATCH全体にもそのエラーが表示されます。IFNAで囲むと、すっきりした代替結果を指定できます。

=IFNA(INDEX(C2:C20, MATCH(E1, A2:A20, 0)), "Not found")

これで、見つからない商品には不安を招くエラーではなく、「Not found」というテキストが表示されます。IFERRORも使えますが、IFNAは見つからない場合だけを対象にし、それ以外のエラーは表示したままにできます。

=IFNA(INDEX(C2:C20, MATCH(E1, A2:A20, 0)), "Not found")

実践的な完成形の数式

ここまでの内容をすべて組み合わせてみましょう。社員テーブルがあり、A列にID、B列に名前、C列に部署、D列に給与が入っているとします。ユーザーはG1にIDを入力します。

その社員の部署を返すには、=INDEX(C2:C200, MATCH(G1, A2:A200, 0))とします。

代わりに給与を返すには、INDEXの範囲をD2:D200に変更します。検索の仕組みは変わらず、読み取る列だけが変わります。これは、動的な検索で日常的に使える定番の方法です。

=INDEX(D2:D200, MATCH(G1, A2:A200, 0))

内側から読むと理解しやすい理由

数式が難しそうに見えるときは、スプレッドシートと同じように、最も内側の関数から外側へ向かって評価します。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))の場合、まずMATCH(E1, A2:A20, 0)を読み、5のような数値を返すと考えます。次に、それを頭の中で置き換えると、=INDEX(C2:C20, 5)になります。

すると数式は、単に「5番目の価格を返す」という意味になります。この習慣があれば、入れ子になった検索も簡単にデバッグできます。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

理解度チェック

2つの関数がどのように組み合わさるかを確認しましょう。

まとめ:INDEX + MATCH

2つの関数を組み合わせて、柔軟な検索を作成しました。

  • パターン:=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
  • MATCHが行の位置を検索し、INDEXがその位置の値を返します
  • 検索列と戻り列は独立しているため、右方向だけでなく左方向にも簡単に検索できます
  • 両方の範囲の高さを揃え、IFNAで囲んでエラーをきれいに処理します

次は、この方法がVLOOKUPより優れていることが多い理由を詳しく見ていきます。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

よくある質問

「INDEXとMATCHを組み合わせる」レッスンは無料ですか?

はい。「INDEXとMATCHを組み合わせる」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Excel Formulas Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Excel Formulas Academyコースには全4レッスンが含まれています。

「INDEXとMATCHを組み合わせる」で何を学びますか?

MATCHで位置を取得し、その位置をINDEXに渡して動的に検索します。 ブラウザで直接実行するハンズオンコードでExcel Formulas Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Excel Formulas Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのExcel Formulas Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「INDEXとMATCHを組み合わせる」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このExcel Formulas Academyレッスンでコードを書いて実行できますか?

はい。すべてのExcel Formulas Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. INDEXで値を取り出す
  2. MATCHで位置を見つける
  3. INDEXとMATCHを組み合わせる
  4. INDEX-MATCHがVLOOKUPより優れている理由
← Excel Formulas Academyに戻る