例の「エクタツ転記シリーズ」も、あと2稿でおしまいです。本稿は、著者自身がエクセル評論家として、以前運営していた『エクセルの達人』(エクタツ、現在は閉鎖済み)というウェブサイトに掲載していたシリーズの転載です。今回は「集計を極める」シリーズのひとつで、「sumproduct」関数を取り上げたいと思います。
『エクセルの達人』(エクタツ)とは、「エクセル評論家」でもある新宿会計士が2021年8月から10月にかけて運営していたウェブサイト。現在は閉鎖済みだが、主要なコンテンツについては現在でも当ウェブサイト『エクタツ』にて閲覧可能。
当ウェブサイト執筆者のような「集計マニア」からすれば、SUMPRODUCT関数は是非ともマスターしておきたい便利技だ。この関数を利用すれば、いちいちデータを増やさずとも、乗数の総和を一発で求めることができる。実務的に非常に役に立つ関数だ。
当ウェブサイトではこれまでも何度となく「集計」をテーマにした仕事術を紹介している。
たとえばシンプルなSUM関数ひとつとっても、キーボードショートカットで一発入力する技を『簡単で超絶強力!SUM関数をキーボードから一発入力』などで紹介した(ただし注意事項もあるので『単にセル合計が知りたいときの「ちょっとした表示技」』などもご参照頂きたい)。
こうしたなか、本日紹介したいのが「SUMPRODUCT関数」だ。
こんな事例を考えてみよう(図表1)。
図表1 ある店舗における商品別の売上高と粗利益
シートの構造自体は極めてシンプルで、A列に商品名、B列に実際の売上高、C列にその各商品の粗利益率、そしてD列に粗利益が示されている。一般に店舗では多くの商品を取り扱っており、この手のスプレッドシートは、実務の世界では頻繁に目にするものだろう。
当たり前の話だが、B列を合計すれば店舗全体の売上高を、D列を合計すれば店舗全体の粗利益を、それぞれ求めることができる。
ただ、この事例だと商品数はわずか4点、図表自体もたかが4列とシンプルなものだが、現実の世界では、さまざまな種類のデータが膨大に格納されているケースも多く、「売上高と粗利益」という列以外に、いちいち粗利益を求めて合計するということが難しいケースもあるだろう。
そこで、「SUMPRODUCT関数」を紹介したい。
ためしにD7セルに、こんな関数を入力してみよう。
=SUMPRODUCT(B2:B5,C2:C5)
これは、「B2×C2」、「B3×C3」、「B4×C4」、「B5×C5」という、2つのデータの掛け算の総和を計算する関数だ。入力した結果は、図表2のとおり。
図表2 SUMPRODUCT関数の入力結果
いかがだろうか。
このSUMPRODUCT関数を入力した図表2のD7セルと、シンプルに「売上高×原価率」を計算した列を合計したD6セルの値が一致していることがご確認いただけるだろう。
すなわち、SUMPRODUCT関数を使用すれば、いちいち、セルの値を計算しなくても、複数のデータの掛け算の総和を求めることができてしまう、というわけだ。この設例だと、売上高と個々の商品の原価率があれば、店舗全体の原価率がわかる、という仕掛けである。
しかも、図表2の設例は「2つのデータ範囲」だが、SUMPRODUCT関数は複数の範囲の総和を求めることも可能だ。
スプレッドシートが複雑になればなるほど、SUMPRODUCT関数が威力を発揮する場面も増えるのである。