Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

ExcelのINDEX関数とMATCH関数の使い方を徹底解説!基本構文から組み合わせ技まで

ポイント

  • INDEX関数は単体でも使えますが、MATCH関数をネスト(入れ子)することで高度な検索が可能になります。
  • この組み合わせはVLOOKUPよりも柔軟性が高く、処理が速くなることもあります。

この記事では、Excel 2019やMicrosoft 365を含むすべてのバージョンのExcelで、INDEX関数とMATCH関数を組み合わせて使う方法を解説します。

INDEX関数とMATCH関数とは?

INDEXとMATCHは、Excelの検索系関数です。それぞれ単独で使用できる独立した関数ですが、組み合わせることでより高度な数式を作成できます。

INDEX関数は、指定した範囲の中から特定の位置にある値、またはその参照を返します。たとえば、「データセットの2行目の値」や「5行3列目の値」を取り出すといった使い方ができます。

INDEXは単体でも十分に活用できますが、MATCHを数式に組み込むことでさらに便利になります。MATCH関数は、指定したセル範囲の中から特定の項目を検索し、その範囲内での相対的な位置(何番目にあるか)を返します。たとえば、「名前リストの中である名前が3番目にある」ことを調べることができます。

ExcelのINDEX関数とMATCH関数の使い方を徹底解説!基本構文から組み合わせ技まで

INDEX・MATCH関数の構文と引数

Excelに関数を正しく認識させるには、次のように記述する必要があります。

=INDEX(配列, 行番号, [列番号])

  • 配列(array): 数式で使用するセル範囲です。A1:D5のように1つ以上の行・列を指定できます。必須の引数です。
  • 行番号(row_num): 値を返す配列内の行番号です(例:2 や 18)。列番号を指定しない場合は必須です。
  • 列番号(column_num): 値を返す配列内の列番号です(例:1 や 9)。省略可能です。

=MATCH(検索値, 検索範囲, [照合の型])

  • 検索値(lookup_value): 検索範囲内で一致させたい値です。手入力した数値・文字列・論理値、またはセル参照を指定できます。必須です。
  • 検索範囲(lookup_array): 検索対象となるセル範囲です。A2:D2 や G1:G45 のように、1行または1列のみ指定できます。必須です。
  • 照合の型(match_type): -1、0、1 のいずれかを指定し、検索値を検索範囲の値とどのように照合するかを決めます(下表参照)。省略した場合の既定値は 1 です。
照合の型の選び方
照合の型動作ルール
1検索値以下で最も大きい値を検索します。検索範囲の値は昇順に並べる必要があります(例:-2, -1, 0, 1, 2、A〜Z、FALSE, TRUE)。検索値が25だが検索範囲に存在しない場合、22のような次に小さい数値の位置が返されます。
0検索値と完全に一致する最初の値を検索します。検索範囲の値は任意の順序でかまいません。検索値が25なら、25の位置がそのまま返されます。
-1検索値以上で最も小さい値を検索します。検索範囲の値は降順に並べる必要があります(例:2, 1, 0, -1, -2)。検索値が25だが検索範囲に存在しない場合、34のような次に大きい数値の位置が返されます。

数値を扱う場合など、ある程度の近似で問題ない場面では 1 または -1 を使用します。ただし、照合の型を省略すると既定値の 1 が適用されるため、完全一致を求めている場合には結果が意図と異なる可能性がある点に注意しましょう。

INDEX・MATCH関数の数式例

INDEXとMATCHを1つの数式に組み合わせる前に、まずそれぞれの関数が単体でどう動作するのかを理解しておきましょう。

INDEX関数の例

=INDEX(A1:B2,2,2)
=INDEX(A1:B1,1)
=INDEX(2:2,1)
=INDEX(B1:B2,1)
ExcelのINDEX関数とMATCH関数の使い方を徹底解説!基本構文から組み合わせ技まで

最初の例では、異なる値を取得できる4つのINDEX数式を紹介します。

  • =INDEX(A1:B2,2,2): A1:B2 の中から2行目・2列目の値を探し、「Stacy」を返します。
  • =INDEX(A1:B1,1): A1:B1 の中から1列目の値を探し、「Jon」を返します。
  • =INDEX(2:2,1): 2行目全体から1列目の値を探し、「Tim」を返します。
  • =INDEX(B1:B2,1): B1:B2 の中から1行目の値を探し、「Amy」を返します。

MATCH関数の例

=MATCH("Stacy",A2:D2,0)
=MATCH(14,D1:D2)
=MATCH(14,D1:D2,-1)
=MATCH(13,A1:D1,0)
ExcelのINDEX関数とMATCH関数の使い方を徹底解説!基本構文から組み合わせ技まで

MATCH関数のシンプルな例を4つ紹介します。

  • =MATCH("Stacy",A2:D2,0): 範囲 A2:D2 の中から「Stacy」を検索し、結果として「3」を返します。
  • =MATCH(14,D1:D2): 範囲 D1:D2 の中から「14」を検索しますが、表に存在しないため、14以下で最も大きい値「13」(検索範囲の1番目)の位置を返します。
  • =MATCH(14,D1:D2,-1): 上の数式とほぼ同じですが、-1 では降順の並びが必要なため、配列が降順になっておらずエラーになります。
  • =MATCH(13,A1:D1,0): シートの1行目から「13」を検索し、配列内の4番目の項目なので「4」を返します。

INDEX-MATCHの組み合わせ例

ここからは、INDEXとMATCHを1つの数式に組み合わせる実例を2つ紹介します。

表内のセル参照を見つける

=INDEX(B2:B5,MATCH(F1,A2:A5))
ExcelのINDEX関数とMATCH関数の使い方を徹底解説!基本構文から組み合わせ技まで

この例では、MATCH数式をINDEX数式の中にネストしています。目的は、商品番号から商品の色を特定することです。

画像の「Separated」行を見ると、各数式を単独で書いた場合の結果が確認できます。ネストした場合の処理の流れは以下のとおりです。

  • MATCH(F1,A2:A5): データセット A2:A5 の中から F1 の値(8795)を検索します。列を上から数えると2番目にあるため、MATCH関数は「2」を返します。
  • INDEXの配列は B2:B5 です。最終的に知りたい値がこの列にあるためです。
  • MATCHが「2」を返したので、INDEX数式は INDEX(B2:B5, 2, [列番号]) と書き換えられます。
  • 列番号は省略可能なので、INDEX(B2:B5,2) となります。
  • これは通常のINDEX数式と同じで、B2:B5 の中の2番目の値、つまり「red(赤)」を返します。

行見出しと列見出しで検索する

=INDEX(B2:E13,MATCH(G1,A2:A13,0),MATCH(G2,B1:E1,0))
ExcelのINDEX関数とMATCH関数の使い方を徹底解説!基本構文から組み合わせ技まで

このMATCHとINDEXの例では、双方向(2軸)検索を行っています。「5月(May)に売れた緑色(Green)の商品の売上額」を求めるイメージです。先ほどの例と似ていますが、INDEXの中にMATCH数式が2つネストされている点が異なります。

  • MATCH(G1,A2:A13,0): 最初に計算される部分です。A2:A13 の中から G1 の値(「May」という文字)を検索して位置を取得します。画像には表示されていませんが、結果は「5」です。
  • MATCH(G2,B1:E1,0): 2つ目のMATCH数式です。こちらは列見出し B1:E1 の中から G2 の値(「Green」という文字)を検索します。結果は「3」です。
  • これでINDEX数式は =INDEX(B2:E13,5,3) と書き換えられます。表全体 B2:E13 の中から5行目・3列目の値を取得するため、結果は「$180」です。

MATCH・INDEX関数使用時の注意点

これらの関数で数式を作成するときは、以下の点に注意してください。

  • MATCHは大文字と小文字を区別しません。テキスト値を照合する際、大文字・小文字は同じものとして扱われます。
  • MATCHが #N/A エラーを返す主なケースは次のとおりです。照合の型が 0 で検索値が見つからない場合、照合の型が -1 なのに検索範囲が降順になっていない場合、照合の型が 1 なのに検索範囲が昇順になっていない場合、そして検索範囲が1行または1列でない場合です。
  • 照合の型が 0 で検索値が文字列の場合、ワイルドカード文字を使用できます。疑問符(?)は任意の1文字、アスタリスク(*)は任意の文字列に一致します(例:=MATCH("Jo*",1:1,0))。疑問符やアスタリスク自体を検索したい場合は、直前に半角チルダ(~)を入力します。
  • INDEXは、行番号と列番号が配列内のセルを指していない場合、#REF! エラーを返します。

関連するExcel関数

MATCH関数はLOOKUP関数と似ていますが、MATCHは項目そのものではなく、その位置を返す点が異なります。

VLOOKUPもExcelで使える検索関数の一つです。高度な検索ではMATCHがINDEXとの組み合わせを必要とするのに対し、VLOOKUPはこの1つの関数だけで数式が完成します。

  1. Microsoft ExcelのMATCH関数の使い方を徹底解説!基本構文から実践テクニックまで

    Microsoft ExcelのMATCH関数は、検索/行列(Lookup & Reference)関数の一つです。セル範囲の中から特定の値を検索し、その値が範囲内の何番目に位置しているかという「相対的な位置」を数値で返すのが主な役割です。MATCH関数の基本的な書式は =MATCH(検索値, 検索範囲, [照合の型]) となります。 MATCH関数の構文と引数 MATCH関数の構文は以下の通りです。 検索値(lookup_value):検索範囲の中で一致させたい値。必須項目です。 検索範囲(lookup_array):検索対象となるセル範囲。必須項目です。 照合の型(match_type)

  2. ExcelのRANDBETWEEN関数の使い方|指定した範囲内の乱数を簡単に生成する3つの方法

    Microsoft ExcelのRANDBETWEEN(ランドビトウィーン)関数は、数学/三角関数に分類される関数の一つで、指定した2つの数値の間からランダムな整数を返します。サイコロの目のような1〜6の乱数を作りたいときや、くじ引きの番号、テストデータなどを自動生成したい場合にとても便利です。 この記事では、RANDBETWEEN関数の書式と、セルへの直接入力、「関数の挿入」ダイアログボックス、「数式」タブを使った3つの方法を、初心者の方にもわかりやすく解説します。 RANDBETWEEN関数の書式 RANDBETWEEN関数の書式は以下の通りです。 =RANDBETWEEN(最小値, 最大