【Excel・エクセル】MATCH関数とINDEX関数で複数条件に合うセルを抽出する

複数の条件に一致するデータを抽出したいんだ。

MATCH関数とINDEX関数の組み合わせで、できるんよ。
- 複数条件を指定するなら、条件を「&」でつなげる
- =INDEX(セル範囲,MATCH(条件1&条件2,条件範囲1&条件範囲2,0),列番号)
- 配列数式にするので、エンターキーではなく「Ctrl + Shift + エンターキー」
MATCH×INDEX複数条件の練習ファイルダウンロード

一緒にやってみませんか?
【Excel・エクセル】MATCH関数とINDEX関数のおさらい
MATCH関数とは?
MATCH関数は、値が範囲の中の何行目(何列目)にあるかが分かる関数です。
=MATCH(検査値,検査範囲,照合の種類)
検査値 | この値は |
検査範囲 | この中の何番目? |
照合の種類 | 0:完全一致、-1:以上、1:以下 |
たとえばセルE2の値がセルA2~A6の中の何行目にあるかは、「=MATCH(E2,A2:A6,0)」で分かります。


詳しくは、こっちのページで解説しているよ。
INDEX関数とは?
INDEX関数は、範囲の中で、指定した位置にある値が分かる関数です。
2つの書き方がありますが、今回は以下の書き方で使います。
=INDEX(配列,行番号,列番号)
INDEX | 次の位置にある値を教えて |
配列 | この範囲の |
行番号 | この位置(上から数えて何行目か) 配列が1列の時は、省略できる |
列番号 | この位置(左から数えて何列目か) 配列が1行の時は、省略できる |
例えばセルA1~D5の中で、4行3列目にある値を知りたい場合、「=INDEX(A1:D5,4,3)」となります。


INDEX関数は、こっちで詳しく教えてもらったよ!
MATCH関数とINDEX関数の組み合わせ方
このMATCH関数とINDEX関数を組み合わせると、VLOOKUP関数のように条件に合うデータを抽出できます。
INDEX関数の行番号を、MATCH関数で指定するんです。
書き方は、こんな感じ。
=INDEX(配列,MATCH(検査値,検査範囲,照合の種類),列番号)

そして今回は、この条件を複数指定する式を見ていくよ。
【Excel・エクセル】MATCH関数とINDEX関数で複数条件を指定する
この表から「女性」かつ「10代」、2つの条件に合う評価を、MATCH関数とINDEX関数を組み合わせて出したいと思います。

やり方は簡単、条件にあたるMATCH関数の検査値を&でつなげて、検査範囲も同じように&でつなげます。
そして配列数式にすればいいのです!

とても簡単そうには聞こえんのですよ。

{=INDEX(A1:C7,MATCH(A10&B10,A1:A7&B1:B7,0),3)}で、求められるよ。説明するね。
ステップ1
答えを出したいセルに、「=INDEX(」と入力してください。

ステップ2
配列はVLOOKUP関数の範囲のようなもの。
元になる表を範囲選択すればOKです。
そして「,(カンマ)」。

ステップ3
行番号はMATCH関数で表します。
「MATCH(」と入力しましょう。

ステップ4
ここで1つ目の条件を指定します。
条件が書かれた、セルA10をクリックします。

ステップ5
2つ目の条件を&でつなげます。
「&」と入力して、2目の条件セルB10をクリックしてください。


「,」も忘れないようにしなきゃ。
ステップ6
検査範囲は、先ほど指定した検査値(条件)と同じように指定します。
まず1つ目の条件(女性)が書かれた範囲、セルA1~A7までをドラッグします。

ステップ7
2つ目の条件範囲を&でつなげます。
「&」を入力して、2つ目の条件(10代)が書かれた範囲、セルB1~B7をドラッグしてください。
そして「,(カンマ)」。

ステップ8
照合の種類は「0」でOKです。

ステップ9
これでMATCH関数は終わりなので、カッコを閉じます。
INDEX関数は続くので「,」も忘れずに。

ステップ10
最後に抽出したい列番号です。
今回知りたいのは評価、評価は最初にドラッグした配列の3列目にあるので、ここでは「3」と入力します。
これでINDEX関数も終わりなので、カッコを閉じます。


これで完成だね!エンターキーを押せば……

あ、エンターキーは押さないで!
そのままエンターキーを押すと、#VALUE!のエラーになってしまいました。


この式を計算するには、配列数式しないといかんのよ。
ステップ11
とはいえ、配列数式のやり方はめっちゃ簡単。
いつものエンターキーではなく、「Ctrl + Shift + エンターキー」を押すだけ!

CtrlキーとShiftキーも一緒に押すだけなんだね。
完成!
無事、性別と年代、二つの条件に一致する評価が抽出できました!

式を見てみると、「{}」で囲まれていますね。
これが、配列数式にしたよって目印なんです。

さらに&でつなげれば、3つ以上の条件も指定できるんよ。
これで、MATCH関数とINDEX関数で複数条件を指定できますね!
それでは、お疲れさまでした!
- 複数条件を指定するなら、条件を「&」でつなげる
- =INDEX(セル範囲,MATCH(条件1&条件2,条件範囲1&条件範囲2,0),列番号)
- 配列数式にするので、エンターキーではなく「Ctrl + Shift + エンターキー」
ディスカッション
コメント一覧
まだ、コメントがありません