INDEX+MATCH関数の使い方|ポイントを分かりやすく
ここでは、エクセルの「INDEX関数+MATCH関数の使い方」を、基本から応用に至るまで、ページを分けて解説します。
このページでは、INDEX+MATCH関数の基本として、条件に一致する値を返す関数の動きやVLOOKUP関数との比較、基本的な使い方を説明します。
1.INDEX+MATCH関数とは?できることを確認
まずはINDEX関数とMATCH関数の組み合わせでなにができるか、見てみましょう。
1-1.INDEX(インデックス)+MATCH(マッチ)関数とは
INDEX(インデックス)+MATCH(マッチ)関数とは、「条件に合うデータを抜き出す」ことができる関数の組み合わせです。
「MATCH関数で条件値に合う行を検索」し、「INDEX関数で抽出」します。
INDEX+MATCH関数の利用例は、次の通りです。
- 「社員№」から「氏名」や「住所」を抽出する
- 「製品番号」をもとに「単価」を抜き出す
- 「製造ロット№」から「検査データ」を表示させる
共通するのは、「『ユニークな(他にはない)値』をもとに関連するデータや値を求める」ことです。
同じような動きをする関数にはVLOOKUP関数がありますが、場面によってはINDEX+MATCH関数でないとできないといったこともあり、覚えておきたい関数の使い方の一つになります。
1-2.INDEX+MATCH関数でできることを見る
次に、INDEX+MATCH関数でできることを例で見てみましょう。
上の表は、社員基本情報の一覧です。社員ごとにナンバーをふり、氏名、年齢、性別、勤務形態を入力しています。
この表を基に説明します。
1-2-1.MATCH(マッチ)関数の動き
便宜上、MATCH関数の動きから見てみます。
MATCH関数は、「検索値の位置を返す」関数です。「ちょっと意味が分からない…」という意見はごもっともですが、そのまま続けます。
MATCH関数を使い、「セルB4からB8の範囲での『緒方幸助』さんの行位置」を求めたところ、「2」と返ってきました。
これは、「B4からB8(氏名の入った範囲)」の中で緒方幸助さんが「上から2番目にいる」からです。
このように、MATCH関数のポイントは「範囲の中での位置が返ってくる」ことです。
1-2-2.INDEX(インデックス)関数の動き
次に、INDEX関数の動きです。
INDEX関数は、「範囲内での『指定した行・列』の位置にあるセルの値を返す」関数です。
INDX関数を使い、「セルA4からE8の範囲での『4行目』・『2列目』の値」を求めたところ、「大杉太郎」さんと返ってきました。
これは、「A4からE8(表全体)」の中で大杉太郎さんが「4行目(行は縦)かつ2列目(列は横)」にいるからです。
このように、INDEX関数のポイントは「範囲の中で指定した位置の値が返ってくる」ことです。
1-2-3.INDEX関数とMATCH関数を組み合わせると…
続いて、INDEX関数とMATCH関数を組み合わせた場合も見てみます。
組み合わせると、「条件に合うデータを抜き出す」ことができます。
今度は、MATCH関数で「セルA4からA8の範囲の『№3』の行位置を検索」し、INDEX関数で『№3』の人の氏名」を求めたところ、「元木一」さんと返ってきました。
これは、MATCH関数で「№3」の行位置は「3」と返ってきて、その結果がINDEX関数の行位置に入ったからです。
さらにINDEX+NATCH関数の便利なところは、「検索値を変えるだけで抜き出す対象を変えられる」ことです。
検索値を「№5」に変えると、抜き出された氏名も変わりました。
このように、INDEX+MATCH関数は「条件に合うデータ」を簡単に抽出できる組み合わせなのです。
2.関数の組み合わせ方と引数の入れ方
次に、関数の組み合わせ方と引数の入れ方を見てみましょう。
2-1.組み合わせ方は3パターン
INDEX関数とMATCH関数を組み合わせる場合、「INDEX関数の引数にMATCH関数を入れる」形になります。
MATCH関数を入れるパターンは、次の通りです。
- INDEX関数の「行番号」
- INDEX関数の「列番号」
- INDEX関数の「行番号」と「列番号」
このうちよく使われるのが、一番上の「MATCH関数をINDEX関数の『行番号』に入れる」パターンです。
そして、この形だと「MATCH関数の検索は行(=縦)方向」になります。
先ほどの例も、№の検索は行(縦)方向でした(青枠のところ)。
2-2.「行方向へ検索」
する場合の数式の形
使用頻度の高い、「行方向へ検索する」場合のINDEX+MATCH関数の数式の形は、次の通りです。
このように、INDEX+MATCH関数に必要な項目(引数)は、「配列」、「検索値」、「検査範囲」、「照合の種類」、「列番号」の5種類です。
なお、他の組み合わせ方はこの後説明します。
3.INDEX+MATCH関数の使い方
続いて、INDEX+MATCH関数の簡単な使い方です。
先程の数式の形になるよう手入力してもいいのですが、より簡単に「条件に合うデータ」を抜き出してみます。
使うのは下の「社員基本情報一覧表」です。
この表から№「3」を検査(検索)値にして、「№3の人の氏名」を抽出してみます。
以下、手順です。
(1)以下の数式をコピーし、セルに貼り付ける
【コピーする数式】
(2)「配列」の文字を消し、「表全体」を指定する
(3)「検査値」の文字を消し、「検索する値」を入れる
(4)「検査範囲」の文字を消し、「検索する範囲」を入れる
(5)「照合の種類」の文字を消し、「0」を入れる
(6)「列番号」の文字を消し、「抽出したい列の番号」を入れる
(7)Enterキーを押せば完了
これで、検査値をもとに氏名を表から抜き出すことができるようになります。
INDEX+MATCH関数がうまくいかない場合には、この手順で再トライしてみて下さい。
4.各引数の入力のポイント
次に、各引数の入力のポイントを見てみます。
4-1.「配列」は「表全体」を指定
まずは「配列」からです。
配列には「表全体の範囲」を指定します。
ポイントは、次の通りです。
- 指定の形は「左上のセル番号:右下のセル番号」
- タイトル行は一般的に含めない
- 複数列複数行がよく使われるが、1列複数行も可能
- 数式をコピーする場合には「$」で絶対参照にする
指定の形は「A4:E8」のようになります。また、一般的にタイトル行は含めませんが、含めても構いません。
そして、数式を他のセルにコピーして使う場合には、F4キーを1回押して「$」が4つ付く「絶対参照(コピーしても動かない)」にします。
なお、配列の入力は「マウスの左ドラッグ」が簡単です。
4-2.「検査値」は検索値を指定
次に、検査値(検索値)です。
検査値には「検索したい値」を指定します。
検査値の指定の仕方は、次の通りです。
(1) 文字列、日付、時刻の場合
検査値を文字列や日付、時刻にする場合には、値を「"」で囲みます。
数式の例は、それぞれ次の通りです。
- 文字列:=MATCH("テスト",B4:B8,0)
- 日付:=MATCH("4/1",B4:B8,0)
- 時刻:=MATCH("9:00",B4:B8,0)
(2) 数値、セル番号の場合
検査値を数値やセル番号にする場合には、そのまま入力すればOKです。
数式の例は、それぞれ次の通りです。
- 数値:=MATCH(70,B4:B8,0)
- セル番号:=MATCH(G4,B4:B8,0)
なお、数式を他のセルにコピーする場合には、検査値もF4キーを1回押して「$」を2つ付け、絶対参照にします。
4-3.「検査範囲」は検索する1列を指定
続いて、「検査範囲」です。
検査範囲には「検査値を検索する範囲」を指定します。
ポイントは、次の通りです。
- 指定の形は「上のセル番号:下のセル番号」
- 行の範囲を「配列」と合わせる
- 必ず1列で指定する
- 数式をコピーする場合には「$」で絶対参照にする
指定の形は「A4:A8」のようになります。
また、行の範囲は『配列』と合わせます。例えば配列が「A4:E8」であれば、検査範囲は「4行目から8行目」となります。そして必ず「1列指定」です。
さらに、数式を他のセルにコピーして使う場合には、F4キーを1回押して「$」が4つ付く「絶対参照(コピーしても動かない)」にします。
なお、検査範囲の入力も「マウスの左ドラッグ」が簡単です。
4-4.「照合の種類」は検索方法を指定
次に、「照合の種類」です。
照合の種類では「検索方法」を指定します。
検索方法は全部で3種類あり、次の通りです。
入力値 | 検索方法 | 条件 |
1 | 検査値以下の最大値で検索 | 検査範囲を昇順に並べ替えておくこと |
0 | 検査値との完全一致で検索 | なし |
-1 | 検査値以上の最小値で検索 | 検査範囲を降順に並べ替えておくこと |
ほとんどの場合で「0」となり、これは「検査値との完全一致での検索」になります。
対して、検査値と「一番近い値を検索する」のが「1」と「-1」です。
「1」は「検査値よりも一つ小さい値」、「-1」は「検査値よりも一つ大きい値」を検索します。
これを「近似値検索」と言いますが、ただしこの機能を使うためには条件があります。それは「検査範囲のデータの並び順」です。
「『1』は昇順(大きいものから順)」、「『-1』は降順(小さいものから順)」で並べる必要があります。
ちゃんと並んでいないと意図しない値が返ってくるので、注意しましょう。
4-5.「列番号」は数値かセル番号で指定
最後に、「列番号」です。
列番号には「配列の中で抽出したい列(列は横)の番号」を指定します。
列番号はあくまでも「配列における」で、Excel自体の列番号ではありません。
「範囲」で指定した中で、「何番目の列がほしいか?」を入れます。
そして、MATCH関数と組み合わせて使う時、多くのケースで「数値」か、「数値の入ったセル番号」が入ります。
ただし、MATCH関数を使うこともでき、その場合には列方向に検索できます。
5.VLOOKUP関数との違いは?どっちがいい?
続いて、INDEX+MATCH関数とVLOOKUP関数の違い、それぞれのメリット・デメリットを見てみましょう。
5-1.INDEX+MATCH関数のメリット
VLOOKUP関数と比べたINDEX+MATCH関数のメリットは、主に2つあります。
5-1-1.条件検索対象の列の位置に縛りがない
VLOOKUP関数と比べたINDEX+MATCH関数の最大のメリットは、「条件検索対象の列の位置に縛りがない」ことです。
例えば上の表の場合、VLOOKUP関数だと「№」では検索ができますが「氏名」では検索できません。
これに対して、INDEX+MATCH関数は「どこでも検索できる」のです。
表の作りや項目の位置を気にしなくていいので、これは大きなメリットです。
5-1-2.複数条件が比較的簡単にできる
また、複数条件で抽出したい時、VLOOKUP関数に比べてINDEX+MATCH関数のほうが比較的簡単にできます。
なお、INDEX+MATCH関数で複数条件で検索する方法は、次のページを参照してください。
⇒ INDEX+MATCH関数で複数条件にANDで一致したデータを抜き出す方法
5-2.INDEX+MATCH関数のデメリット
反対に、INDEX+MATCH関数のデメリットは「数式が長くなり分かりづらい、作るのが面倒くさい」ことです。
上はVLOOKUP関数の引数ダイアログです。VLOOKUP関数の引数は、4つであることが分かります。
対して、これがINDEX+MATCH関数の、INDEX関数部分の引数ダイアログです。引数の数はINDEX関数で3つ(そのうち一つはMATCH関数が入る)、そしてこの他にMATCH関数で3つの、計6つとなっています。
VLOOKUP関数に比べて引数の数が多いため、作るのが面倒で、分かりづらくもなっています。
これが、INDEX+MATCH関数のデメリットです。
5-3.使い分け方
メリット・デメリットを踏まえて考えると、メインで使うべきはVLOOKUP関数です。作りやすく分かりやすいのは、何より便利です。
そして、表の作り上検索列が左端にない場合と、複数条件を指定したい場合に、INDEX+MATCH関数を使いましょう。
このように使い分ければ、効率よく作業ができるはずです。
なお、VLOOKUP関数の基本的な使い方は以下を参考にしてください。
6.INDEX+MATCH関数は複数条件も指定できる
INDEX+MATCH関数は、VLOOKUP関数では作業列なしにはできない「複数条件の指定」ができます。
INDEX+MATCH関数でも、引数では条件を複数入れる形にはなっていませんが、ひと工夫することで、作業列なしに可能です。
なお、一口に「複数条件」といっても、「かつ(AND)」と「または(OR)」の2パターンあり、工夫の仕方や数式の形はそれぞれ違いますが、そのどちらでもできます。
詳しい解説は、それぞれ次のページでしています。
参考にしてみてください。
7.列(横)方向や行列両方への検索もできる
一般的に行(縦)方向への検索で使うINDEX+MATCH関数ですが、組み合わせ方では列(横)方向や行列両方への検索もできます。
それぞれの組み合わせ方を見てみましょう。
7-1.列(横)を検索する形
まずは、「列を検索する」パターンです。
数式の形は、以下の通りです。
【コピーする数式】
列検索を使用する例としては、「データを縦方向に入力している」ケースが考えられます。
例えば、1つの商品に関する情報を、横ではなく縦に入れる形式の場合には、この組み合わせで検索するようになります。
7-2.行列両方を検索する形
次に、「行列両方を検索する」パターンです。
数式の形は、次の通りです。
【コピーする数式】
行列両方の検索を使用する例としては、「可変で値を抜き出したい」ケースが考えられます。
例えば、今は№10の商品の単価を抜き出したいが、場合によっては№8の型番を抜き出したい、といった場合には、行列両方の検索を用いるとよいでしょう。
【口コミ・評判のいいExcel本の紹介】
8.条件一致を複数抽出するには
INDEX+MATCH関数の組み合わせで抽出できるデータは、基本的に「1つ」です。「該当する中で一番上にあるデータ」が抜き出されます。
つまり、基本的にINDEX+MATCH関数では「複数の抽出はできない」のです。
もし、「条件一致を複数抽出したい」場合には、「INDEX関数にさらに別の関数を組み合わせ」ます。
詳しい説明は、次のページで行っています。
⇒ 「指定条件に合うデータ全てを一覧表からエクセル関数で順に抽出する方法」へはこちら
以上、参考になれば幸いです。
次のページでは、INDEX+MATCH関数の基本的な条件指定の仕方を解説しています。
一般的にはセル参照で指定することの多いINDEX+MATCH関数の条件値ですが、数式に直接入力する場合、実は簡単ではありません。
その点も解説しているので、よかったら見てみてください。
INDEX+MATCH関数の、他の記事へのリンクはこちらです。
- INDEX+MATCH関数その他の記事へのリンクはこちら