やりたいこと
左の表から種類がいちごで販売店がE商店の値段を求めたいとします。
一見VLOOKUP関数を使って求めることができそうですが、VLOOKUP関数の場合は複数の条件を設定することができないため、種類+販売店のKeyとなる列を新たに挿入しないと実現するのが難しいかと思います。
今回はMATC関数とINDEX関数と配列数式を使って赤枠内の値段を求める方法をご紹介します!
結論から言うと
{=INDEX(A2:C6, MATCH(E2 & F2, A2:A6 & B2:B6, 0), 3)}
これで求めることができます。
順を追って解説しているので参考にしてみてください(^^)/
作成手順
MATCH関数
まずMATCH関数を使って、左の表から対象となる行を検索しましょう。
まず種類がいちごとなる行を求めるために以下のように入力してみてください。
=MATCH(E2,A2:A6,0)
第1引数に検索値、
第2引数に検索範囲
第3引数に照合の種類(0で完全一致)をセットしています。
範囲の中から初めにいちごが現れる1(行目)を取得することができました。
6行目にもいちごがありますが、はじめにヒットした検索値が返ってくることに注意しましょう。
配列数式
では、次に種類がいちごで販売店がE商店になる行を求めてみましょう。
以下のように「&」を付けることで複数の条件を設定することができます。
=MATCH(E2 & F2 , A2:A6 & B2:B6 , 0)
結果はエラーとなってしまいました。
実は「&」で繋げて複数条件を設定した場合は、配列数式にしなければいけません。
方法は簡単です。
数式入力後にEnterではなく、Ctrl + Shift + Enterを押してみてください。
{=MATCH(E2 & F2 , A2:A6 & B2:B6 , 0)}
配列数式にするとこのように数式が{ }で囲まれます。
さきほどはエラーとなりましたが、無事に5(行目)を取得することができました。
INDEX関数
INDEX関数には「配列形式」と「参照形式」の2つの種類がありますが、今回は配列形式を使用します。
配列形式は以下の記載します。
=INDEX(配列 , 行番号, 列番号)
それでは、INDEX関数だけを使ってExcelの表を埋めてみましょう。
第1引数の配列には左の表の範囲を入力します。
第2引数にはいちごとE商店がある5(行目)を入力します。
第3引数には3列目が値段列になるので、3を入力します。
=INDEX(A2:C6, 5, 3)
これで無事に値段1,000を求めることができました。
MATCH関数とINDEX関数を組み合わせる
あとはこの2つを組み合わせて完成です!
{=INDEX(A2:C6, MATCH(E2 & F2, A2:A6 & B2:B6, 0), 3)}
こちらも最後にCtrl + Shift + Enterを押すことを忘れないように注意してください(^^)
無事にE商店のいちご1,000を取得することができました!
ひとこと
数式だけを見るとややこしそうに見えますが、理解できるとかなり便利な方法だと思います。
VLOOKUPで複数条件をつけたいというケースは結構あると思うので、今回の方法をぜひ活用してみてください^^
今後も便利な関数や組み合わせがあれば紹介していきたいと思います!