INDEX+MATCH関数を複数条件にする方法|全て一致を抽出

ここでは、INDEX+MATCH関数で「複数条件のすべてに一致するデータを抜き出す方法」を解説します。

 

なお、「どれかを満たす」のOR条件の数式の作り方は、次のページで紹介しています。

⇒ INDEX+MATCH関数で複数条件にORで一致したデータを抜き出す方法

1.まずはやりたいことを確認

まずは、やりたいことを例を含めて確認します。

 

1-1.INDEX+MATCH関数を「すべての条件に一致なら抽出」の形の複数条件にしたい

まず、やりたいことは「INDEX+MATCH関数を『すべての条件に一致なら抽出』の形の複数条件にする」です。

 

ポイントは、次の2つです。

ポイント
  • INDEX+MATCH関数を「複数条件にする」
  • 「すべての条件に一致なら抽出(AND条件)」の形にする

条件の指定はMATCH関数の「検査値」で行いますが、指定できる条件は基本的に一つなので、これを複数条件にできるようにします。

 

そして、「全ての条件に一致なら抽出(AND条件)」の形にします。なお、「どれかに一致なら抽出(OR条件)」の形は以下のページで解説しています。

⇒ INDEX+MATCH関数で複数条件にORで一致したデータを抜き出す方法

 

1-2.例で確認

一つ例を見てみましょう。

上の表は、「商品販売実績の一覧」です。販売日や販売先、売れた商品名や個数、単価などが入力されています。

 

例えばこの表から、「『4月2日』に『タオル』を販売した相手先のデータ」を抜き出してみます。

この場合条件値は、「販売日の列が『4/2』」と「商品名の列が『タオル』」の2つです。

 

結果、「4/2にA社にタオルを3つ売った」というデータが抽出できています。

 

このように「INDEX+MATCH関数で『複数条件全て一致』の数式」は、「複数条件のどれにも当てはまるデータを抽出」できます。

2.「数式の形」と「普段と違う点」を確認

次に、「数式の形」と「普段と違う点」を確認します。

 

2-1.数式の形

まず、数式の形は次の通りです。

{=INDEX(配列,MATCH(検査値1&検査値2…,検査範囲1&検査範囲2…,照合の種類),列番号)}

「検査値1と検査範囲1」、「検査値2と検査範囲2」はセットです。

 

条件の数だけこのセットが増えます。

 

2-2.普段と違う点は3つ

普段のINDEX+MATCH関数と違う点は、次の3つです。

異なる点
  • 検査値も検査範囲も「&」でつなぐ
  • 検査値と検査範囲は順番を合わせる
  • 数式の最初と最後に「{}」がある(配列数式にする)

まず、「検査値も検査範囲も『&』でつないで複数指定」します。

 

次に、「検査値1に対して検査範囲1」、「検査値2に対して検査範囲2」…というように順番を合わせます。

 

そして数式が出来上がったら、「数式の前後に『{ }』を付けて『配列数式』」にします。ただしこれは手入力ではなく、ある一定の操作で付けます。

3.数式の作り方

では、実際に数式を作ってみます。

先ほどの例を使い、条件も「販売日が『4月2日(セルA11の値)』」で「商品名が『タオル(セルB11の値)』」の2つにし、数式をセルA15に入れていきます。

 

以下手順です。

 

(1)以下の数式をコピーし、セルに貼り付ける

【コピーする数式】

=INDEX(配列,MATCH(検査値1&検査値2,検査範囲1&検査範囲2,照合の種類),列番号)

 

(2)「配列」の文字を消し、元の表全体を指定後、F4キーを1回押す

※ F4キーを押すことで「$」が4つ付きます

 

(3)「検査値1」の文字を消し、一つ目の条件が入ったセルを指定後、F4キーを1回押す

※ F4キーを押すことで「$」が2つ付きます

 

(4)「検査値2」の文字を消し、二つ目の条件が入ったセルを指定後、F4キーを1回押す

 

(5)「検査範囲1」の文字を消し、1つ目の検査範囲を指定後、F4キーを1回押す

 

(6)「検査範囲2」の文字を消し、2つ目の検査範囲を指定後、F4キーを1回押す

 

(7)「照合の種類」の文字を消し、「0」を入れる

 

(8)「列番号」の文字を消し、欲しい値の列番号を入れる

 

(9)「Ctrlキー」と「Shiftキー」を押しながらEnterキーを押す

 

(10)他のセルに数式をコピーし、列番号を変えた後、(9)と同じ操作をすれば完了

セルA15に入れた数式は、次のようになります。

{=INDEX($A$3:$F$7,MATCH($A$11&$B$11,$A$3:$A$7&$C$3:$C$7,0),2)}

4.数式作成のポイントは

先ほど触れた以外の、数式作成のポイントは次の通りです。

ポイント
  • F4キーで「$」を付けるのは、数式コピーで参照先がズレないようにするため
  • 「照合の種類」は基本「0」
  • 「Ctrl+Shift+Enter」を忘れると#VALUE!エラーになる

F4キーを押して「$」を付けるのは、他のセルに数式をコピーした時に「配列」や「検査値」がズレないよう「絶対参照」にするためです。

 

また、これはMATCH関数の基本ですが、「照合の種類は基本『0』」です。

 

そして、「{ }」を付ける操作「Ctrl+Shift+Enter」を忘れると#VALUE!エラーになります。

逆に#VALUE!エラーになったら「操作を忘れたかな?」と思いましょう。

5.結果を別シートに抽出する場合

次に、INDEX+MATCH関数の複数条件での抽出結果を「別シートに表示」させる方法です。

 

5-1.別シート参照させる引数は

まず、「結果を表示させるシート」と「元の表があるシート」を別にする場合、特定の引数は「元の表(結果の表示とは別)のシート」を参照させる必要があります。

 

それは、次の赤字の所です。

{=INDEX(配列,MATCH(検査値1&検査値2…,検査範囲1&検査範囲2…,照合の種類),列番号)}

このように、「配列」と「検査範囲」は、「結果を表示させるシートとは別のシートの範囲」を指定する必要があります。

 

5-2.数式の例

では数式が実際にどのようになるか、例を見てみます。

 

まずは例の状況です。

上は、「元の表」シートにある商品販売実績表です。

 

そして上が、「抽出結果」シートにある抽出結果を表示させる表です。

 

このような状態の場合、セルA8に入れる数式は次のようになります。

{=INDEX(もとの表!A3:F7,MATCH(抽出結果!A4&抽出結果!B4,もとの表!A3:A7&もとの表!C3:C7,0),2)}

上のように、別シートを参照する引数には「シート名!」が付きます。なお、シート名によっては「'シート名'!」となることもあります。

 

5-3.引数で別シートを指定するコツ

引数で別シートを指定するコツを、引数「配列」の指定を例に見てみます。

 

以下手順です。

 

(1)「配列」の文字を消した後、参照したいシートをクリックする

 

(2)「配列」に指定する範囲を選択する

このように、指定したいシートをクリックすることで「シート名は自動で入力」されます。

 

なお、検査値を指定する場合には「抽出結果」シートをクリックする、検査範囲を指定する場合には「もとの表」シートをクリックする、ということを繰り返します。

 

やってみるととても簡単です。


口コミ・評判のいいExcel本の紹介】


6.条件が3つ以上の場合は

条件が3つ以上の場合、数式は以下の通りです。

【コピーする数式】

=INDEX(配列,MATCH(検査値1&検査値2&検査値3,検査範囲1&検査範囲2&検査範囲3,照合の種類),列番号)

【コピーする数式】

=INDEX(配列,MATCH(検査値1&検査値2&検査値3&検査値4,検査範囲1&検査範囲2&検査範囲3&検査範囲4,照合の種類),列番号)

検査値と検査範囲のセットが増えただけで、数式の作り方は一緒です。

 

コピーしセルに貼り付けて使ってください。

 

以上、参考になれば幸いです。

 

次のページでは、INDEX+MATCH関数で複数条件のどれかに当てはまればという、OR条件の指定の仕方を解説します。よかったら参照してください。

 

→ 次のページへはこちら

 

Top