無料でExcel並み!Google スプレッドシートの使い方

セル範囲同士をかけ算して総計を求められるSUMPRODUCT関数 ~条件を指定した計算も可能

SUMPRODUCT関数は、縦横の表の計算に便利

 商品の単価と販売数の一覧から売上金額を求めるには? 「*」を使った掛け算とSUM関数を使う方が多いでしょう。では、単価200円以上の商品の売上金額合計は? SUMIF関数や、フィルターを利用する方法もありますが、今回はセル範囲の合計の計算で汎用性の高いSUMPRODUCT(サム・プロダクト)関数を紹介します。単純に合計するだけでなく、条件を指定した計算も可能です。

SUMPRODUCT関数で横方向の「積」を合計する

 以下のような表で、すべての商品の単価と販売数を合計したい場合、SUMPRODUCT関数なら「=SUMPRODUCT(B2:B6, C2:C6)」で一気に計算できます。SUM関数のように、商品ごと横方向、縦方向へ計算して合算する必要はありません。

「=SUMPRODUCT(B2:B6, C2:C6)」と入力する
すべての商品の売上金額が合計された

 SUMPRODUCT関数は、PRODUCT(積)をSUM(和)する関数です。構文は『=SUMPRODUCT(配列1, 配列2, ・・・)』となります。「,」でつなげて[配列3]以降にも指定可能です。「配列」はデータを入れる箱のようなものと考えてください。SUMPRODUCT関数の場合は、単純にセル範囲と覚えておいてもいいと思います。

 上記で入力した関数式「=SUMPRODUCT(B2:B6, C2:C6)」は、『「B2×C2」+「B3×C3」+「B4×C4」+「B5×C5」+「B6×C6」』と同じ意味になります。

条件を指定して合計する

 今度は単価が「200円以上」の条件を追加して合計を計算してみます。「=SUMPRODUCT(B2:B6>=200, C2:C6)」としたいところですが、これは間違いです。どのような結果になるのか試しに入力してみましょう。

「=SUMPRODUCT(B2:B6>=200, C2:C6)」と入力する
「32」と表示された

 「B2:B6>=200」は『B2~B6のうち200以上』の条件になります。条件に一致したセルは「1」(TRUE)、一致しないセルは「0」(FALSE)として扱われます。条件に一致するセルは、B2(200)、B4(250)、B6(220)です。これらのセルが条件式で「1」(TRUE)と判定され、関数式の内容は『「1×C2(11)」+「1×C4(11)」+「1×C6(20)」』となり、結果「32」と表示されたわけです。

 正しい関数式は「=SUMPRODUCT((B2:B6>=200)*B2:B6, C2:C6)」です。

関数式を「=SUMPRODUCT((B2:B6>=200)*B2:B6, C2:C6)」と修正する
単価が「200円以上」の条件に一致する商品の売上金額が合計された

 『「1×B2(200)×C2(11)」+「1×B4(250)×C4(11)」+「1×B6(220)×C6(20)」』が計算され、正しい結果「7150」が表示されました。

 SUMPRODUCT関数のよくあるエラーとしては、[配列1]と[配列2]のセル範囲が一致していないことが考えられます。どのセル範囲を掛け合わせて合計するのかを確認しましょう。また、引数に文字列が含まれていると条件の結果が「0」として扱われます。明らかに計算が合わない場合は書式を確認してみてください。