#利用シチュエーション
- 複数列にまたがる既存のデータから特定の条件に一致する値を抽出したい時
##直面した問題
× VLOOKUPだとキーにする値は1列しか指定できない
#記述方法
=INDEX(抽出対象範囲,条件1と条件2の両方に当てはまる件数,列)
<記述例>
=INDEX($I$2:$I$4,SUMPRODUCT(($D$2:$H$4=A2)*ROW($A$1:$A$3)),1)
解説
- SUMPRODUCT関数で特定の条件を指定し、条件に一致した行数をROW関数で抽出
- INDEX関数で指定した列から上記で抽出した行数の値を抜き出す
####個々の関数の説明####
INDEX関数は指定された行と列が交差する位置にあるセルの値を返す
書き方 利用例 書式 INDEX(範囲, 行番号, 列番号, 領域番号) INDEX(I2:I4,1) 引数1 1つまたは複数のセルのを範囲を指定 I2:I4 引数2 指定した範囲の上からの行数を指定 1 引数3 指定した範囲の左からの行列数を指定 引数4 複数の領域を選択した場合、どちらの範囲を使用するか指定
SUMPRODUCT関数は指定した複数条件の配列の合計(件数)を返す
書き方 利用例 書式 SUMPRODUCT(範囲1,範囲2,...) SUMPRODUCT((D2:H4=A2)*1) 引数1 選択した範囲から一致する条件を指定 (D2:H4=A2) 引数2 選択した範囲から一致する条件を指定 1 SUMPRODUCT(範囲1,範囲2)で選択した範囲の合計 SUMPRODUCT(条件1*条件2)で条件に一致する件数
ROW関数は指定したセル参照の行番号を返す
書き方 利用例 書式 ROW(範囲) ROW(A1:A3) 引数1 1つまたは複数のセルのを範囲を指定 A1:A3
#サンプル
#参考
##VLOOKUP関数を利用して複数列を検索値として指定したい場合
複数列を検索値として指定したい場合は、前述のINDEX関数を用いたほうが楽ですが、VLOOKUP関数を用いて複数列を指定することも可能です。
##記述方法
検索をする列を指定して、なければ次を指定する入れ子方式で記載。
=IFERROR(VLOOKUP($A2,$D$2:$E$4,2,),IFERROR(VLOOKUP($A2,$F$2:$G$4,2,),IFERROR(VLOOKUP($A2,$H$2:$I$4,2,),IFERROR(VLOOKUP($A2,$J$2:$K$4,2,),IFERROR(VLOOKUP($A2,$L$2:$M$4,2,),)))))