【Excel】複数条件でデータを抽出する(SUMPRODUCT関数)

スポンサーリンク

複数条件でデータを抽出する(SUMPRODUCT関数)

Excelでデータを抽出することはよくあります。
特に「VLOOKUP関数」を用いることが多いのではないでしょうか。
しかし「VLOOKUP関数」はひとつの条件で一意のデータしか抽出できません。

複数条件でデータ抽出を行いたい場合は「SUMPRODUCT関数」を使いましょう。
具体的には「SUMPRODUCT関数」で配列で何番目(行)を決定して、
「INDEX関数」で目的のセルのデータを参照します。

「SUMPRODUCT関数」の使い方

=SUMPRODUCT([配列1],[配列2],[配列3]...)

範囲または配列の対応する要素の積を合計した結果を返します。

「SUMPRODUCT関数」自体の使い方は配列同士で積(掛け算)を求め、
さらにそれを合計するものです。
例えば単価と数量が一覧になっているものを範囲指定するだけで
合計金額が計算される便利な関数です。

例では、C18セルの”2”とD18セルの”5”を掛けると”10”、
C19セルの”3”とD19セルの”6”を掛けると”18”となり、
それぞれを合計すると”28″が返ってきます。

複数条件で抽出する「SUMPRODUCT関数」の使い方

それでは複数条件で抽出する場合、条件を指定した配列を複数指定します。
さらにそれらの配列にそれぞれ条件を指定します。
条件を指定すると配列の中は「TRUE」または「FALSE」になり、
それぞれ「TRUE」は”1″、「FALSE」は”0″であらわされます。
そうすると「SUMPRODUCT関数」は積を求めますので、
全ての条件に合致する配列のみが”1″で残ります。
さらにROW関数で行数を掛けてあげると
複数条件に合致するデータの行番号が返ってくるというものです。
行番号が分かればあとは「INDEX関数」でデータを抽出するだけです。

=INDEX([データ抽出したい列],SUMPRODUCT(([抽出条件1の範囲]=[条件1])*([抽出条件2の範囲]=[条件2])*ROW([抽出条件の範囲])))

※[抽出条件nの範囲]と[条件n]の間は例として等号(=)にしていますが、
 不等号(≦や>)でも構いません。

複数条件で抽出する「SUMPRODUCT関数」の例

下の表のようにそれぞれ学年と組の担任が一覧となっています。
ここから、「2年2組」の「担任」を抽出したいと思います。

=INDEX(D2:D11,SUMPRODUCT((B2:B11=F3)*(C2:C11=G3)*ROW(B2:B11)))

B列には「2年」、C列には「2組」の条件で配列を絞り
2つの条件に合致する行が最終的に7行目というのが「SUMPRODUCT関数」で返されています。

そして「INDEX関数」でD列の7行目の「担任」を参照抽出しています。
結果として「佐々木」が返ってきました。

「INDEX関数」の使い方はこちらで説明していますのでご覧ください。

【Excel】リスト(配列)からデータを行と列を指定して取り出そう(INDEX関数)
リスト(配列)からデータを行と列を指定して取り出そう(INDEX関数) Excelでデータを表にまとめたりして資料を作ることは多いこと...

「SUMPRODUCT関数」のまとめ

  • 複数条件でデータを抽出するときは「SUMPRODUCT関数」と「INDEX関数」
  • 「SUMPRODUCT関数」で複数条件を指定して行番号を取得する
  • 最終的に「INDEX関数」で目的のデータを抽出する

いかがでしたでしょうか?
今回は複数条件でデータを抽出することができる「SUMPRODUCT関数」をご紹介しました。
慣れるまでは使い方が難しいかもしれませんが、
マスターすればよりExcelの幅が広がり、業務効率もアップします。

使いこなせている人も多くはいない関数なので
初心者から上級者にぐっと近づく一歩にもなります。
ぜひとも「SUMPRODUCT関数」を覚えておきましょう!

以上、「【Excel】複数条件でデータを抽出する(SUMPRODUCT関数)」でした。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする