Excel。1列おきごとの合計を楽に算出するには、どうしたらいいの
<SUMPRODUCT+MOD+COLUMN関数>
Excelは基本的に上から下へ流れていくテーブル(表)でつくれば、様々なExcelの機能を使うことができます。
ただ、どうしても帳票と同じように表をつくってしまうと、簡単に算出できない場合があります。
例えば、次の表。
来店客数と売上高が一組になったデータが列方向に拡張されている表。
このような表、帳票としてはいいのですが、単純に、来店客数の合計や、売上高の合計を算出する場合、1列おきで範囲を設定する必要があります。
要するに、列が増えれば増えるほど、面倒な作業というわけです。
そこで、来店客数の合計B8には次の数式を設定することで、手早く算出することができます。
=SUMPRODUCT((MOD(COLUMN($B$3:$G$5),2)=0)*$B$3:$G$5)
また、売上高の合計C8には、次の数式を設定してあります。
=SUMPRODUCT((MOD(COLUMN($B$3:$G$5),2)=1)*$B$3:$G$5)
数式の引数を確認しましょう。
最初のSUMPRODUCT関数ですが、SUMは、和算。
PRODUCTは乗算で、乗算した結果を和算する関数です。
そして引数のMOD関数とCOLUMN関数は何をやっているのかというと、1列おきで範囲選択したいわけです。
1列おきということは、列番号をつかって、偶数か奇数なのかを判定させればいいわけです。
MOD関数は、除算した、あまりを算出する関数です。
また、COLUMN関数は列番号を算出する関数です。
よって「MOD(COLUMN($B$3:$G$5),2)」で、列番号を2で除算するという数式ですから、結果「0」だったら余りが0ということで、偶数列ということがわかります。
「MOD(COLUMN($B$3:$G$5),2)=0」と「=0」とすれば、「MOD関数の結果が0と等しいか」と判断させています。
「等しい」ならば「TRUE」、「等しくない」ならば「FALSE」と判定されます。
「TRUE=1」で「FALSE=0」とExcelでは定義されていますから、「MOD(COLUMN($B$3:$G$5),2)=0」が成立しているならば、偶数列は「1」。
奇数列は「0」と算出されるわけです。
ここで、SUMPRODUCT関数の出番。
「*$B$3:$G$5」と乗算していますが、偶数の「1」を掛ければ、その値は残り、奇数の「0」を掛ければ、「0」となるわけです。
その結果を和算すれば、偶数列のみの合計値を算出できるというわけです。
1列おきとか1行おきとかで、合計を算出したい場合にはSUMPRODUCT関数をつかってみるといいかもしれませんね。