たとえば、下記の 3 つの段ボール箱にそれぞれの商品が梱包されており、
段ボール箱がそれぞれ複数あるとします。

全部で商品の数はいくつあるかを知りたいとしましょう。
答えにたどり着く、その方法いくつか考えられますね。


 
1Excel2011-001.jpg

2Excel2011-001.jpg

 

一番よく見かけるのは、下図の [数量] のような場所を用意して、
「1袋あたりの個数×1箱あたりの袋の数×箱の数」という数式を作成して、まずは商品ごとの
数量を求めてから、SUM 関数を使って合計する方法です。


3Excel2011-001.jpg

 

4-2Excel2011-001.jpg

 

SUMPRODUCT 関数を使用すると、[数量] のような一時計算用の数式を用意せずに
同じ結果を得ることができます。

SUMPRODUCT 関数は、引数として指定した配列の対応する要素間の積をまず計算し、
さらにその和を返す関数です。

あら、ややこしい。。。

積は掛け算の結果、和は足し算の結果です。
いくつかの掛け算の結果を最後に全部合計してください、というイメージです。


“配列” だとイメージがつきにくい、わかりにくいという場合は、“セル範囲” に、
“要素” だとわかりにくいという場合は、“セル” に置き換えてイメージしてください。
厳密には異なりますが、まずはイメージをつかむことが大切なので。

下図の表の場合、3 つの “配列” があり、配列の中には “要素” が 3 つずつ含まれています。

配列 1 には、①、②、③ の要素がある。
配列 2 には、④、⑤、⑥ の要素がある。
配列 3 には、⑦、⑧、⑨ の要素がある。


 
5Excel2011-001.jpg

数式は、「=SUMPRODUCT(配列1,[配列2],[配列3],…)」というように引数を指定して作成します。

引数となる配列は最大 255 個まで指定できます。
なお、引数として指定する複数の配列は、行数と列数が等しい配列である必要があり、
行数と列数が等しくない場合、エラー値 #VALUE! が返されます。
数値以外の配列要素は、0 であると見なされて計算されます。

SUMPRODUCT 関数は、配列の対応する要素間の積をまず計算し、さらにその和を返します。
ということは、下図の場合は、=SUMPRODUCT (配列 1,配列 2,配列 3) という数式を作成すると、
=①×④×⑦+②×⑤×⑧+③×⑥×⑨ という数式と同じ結果が返るということです。

 

 
6Excel2011-001.jpg



「一番よく見かける方法」が悪いのではなくて、「こういう方法もあるよ」ということで。

商品ごとの数量の合計もわかるようにしたいのであれば、一時計算用の数式を作るべきなのです。
そうではなくて、商品ごとの数量は表示する必要がないのに SUM 関数で合計値を求めるために
しかたなく作っている、というのであれば SUMPRODUCT 関数で解決できますね。

そして、SUMPRODUCT 関数は応用することでもう少し違う場面でも活躍してくれます。
それはまた今度。

石田かのこ