SUMPRODUCT関数2

SUMPRODUCT関数の基本的な使用法はSUMPRODUCT関数を参照してください。

下のような商品名、価格、数量がある表で価格×数量の合計を作業列を作成せず、SUMPRODUCT関数で求めることが出来ます。

sumproduct

 

セルC20に =SUMPRODUCT(B2:B19,C2:C19) と入力します。

sumproduct_2

というのをご説明しました。

今回はすべての価格×数量の合計ではなく特定の商品の価格×数量の合計をSUMPRODUCT関数で計算します。この表では同じ商品が3回ずつ登場しています。バナナだけの価格×数量の合計を計算してみます。

セルC20に =SUMPRODUCT((A2:A19=”バナナ”)*1,B2:B19,C2:C19) と入力します。

sumproduct_5

説明しているサイトによっては、 =SUMPRODUCT((A2:A19=”バナナ”)*B2:B19,C2:C19) や =SUMPRODUCT((A2:A19=”バナナ”)*B2:B19*C2:C19) のような式もあります。

SUMPRODUCT関数は引数の配列を対応する項目の積を計算し合計する関数でした。

=SUMPRODUCT((A2:A19=”バナナ”)*1,B2:B19,C2:C19)  は
(A2:A19=”バナナ”)*1 と
B2:B19 と
C2:C19 の3つ引数があります。セルA2、B2、C2の値の積を出して、次にセルA3、B3、C3の積を出してとなりますが、第1引数が(A2:A19=”バナナ”)*1と謎です。

計算式のセル参照という項目で説明しましたが、セルD2に =B2:B19*C2:C19 という式を入れた場合入力されたセルD3と同じ行のセルB3とC3の積が計算されます。

sumproduct_6

 

A列は数値ではありませんが、=A2:A19 という式をセルE2に入れると2行目のバナナが答えとして返ってきます。先ほどの計算式と同じ理屈ですね。

 

sumproduct_6-1

 

次に、 =(A2:A19=”バナナ”) という式をセルF2に入れてみます。カッコは無くても今回は大丈夫ですが、さらに先に行ったとき必要です。これも同じように2行目のセルA2の値は、”バナナ”という文字列と等しいですか?等しくないですか?。という式になります。何々と等しいですか、何々より大きいですか、などのIF関数の条件式に使うような数式はTRUEかFALSEが返ってきます。

sumproduct_7

そして、TUREとFALSEにも書きましたが、TRUEに四則計算をしてやると1という数値として扱うことができます。FALSEは0になります。=(A2:A19=”バナナ”)*1 はTRUE×1なので1が返ってきます。

sumproduct_8

 

=SUMPRODUCT((A2:A19=”バナナ”)*1,B2:B19,C2:C19)  は第一引数が1か0になります。A列がバナナの時は1、バナナでない時は0になりますので、1*12*3(セルA2、B2、C2の値の積)、0*250*5(セルA3、B3、C3の積)と順に積を計算し合計してくれるというわけです。

他のサイトで見たという、SUMPRODUCT関数の使い方も意味は同じです。*1とせずに次の配列を掛けている =SUMPRODUCT((A2:A19=”バナナ”)*B2:B19,C2:C19) は無駄もなくかっこいいですが、関数ボックスで見ると引数が2つなので、関数の意味をよく理解できていないうちは、なぜ範囲と範囲を掛けているのか理解が難しいかもしれません。

sumproduct_9

 

TUREかFALSEかの真偽の値に、価格(数値)を掛けることで真偽のTRUE、FALSEを1と0の数値として扱っています。

慣れるまでは×1で数値にした物を別に分けておくと何をしているのか思い出しやすいと思います。

sumproduct_10

コメントを残す

メールアドレスが公開されることはありません。