Excel。一行おきの数値の合計を簡単に算出したいけどどうしたらいいの?
<MOD&ROW関数とSUMIF関数>
やりたいことは簡単でも、実際に算出するとなると、どうしたらいいの?と思うことって結構あります。
例えば次のような表。
1行目には販売数が2行目には金額が入力されている表。
算出したいのは、それぞれの合算値です。
今回は、わかりやすいように少ないデータにしましたが、データの件数が増えたら、一行おきに範囲選択するのは、とても面倒ですし、ミスが発生する確率も当然高くなります。
できれば、販売数の列、金額の列というように、列ごとに管理してくれていれば、困ることはなかったのですが、今から作り直すのも面倒。
Excel VBAでマクロを作成するというのもいいのですが、もっと簡単に算出する方法はどのようにしたらいいのでしょうか?
今回のポイントは、奇数行なのか?偶数行なのか?ということです。
販売数は奇数行ですから、奇数行ごとに合算すれば、販売数の数値を算出することが出来ますし、偶数行ならば、金額の合算値を求めることができます。
奇数かどうかを判断する、ISODD関数や偶数かどうかを判断するISEVEN関数などもありますが、そんな珍しくない関数でも算出することができます。
その関数は、MOD関数とROW関数。
MOD関数は、除算した結果の「あまり」を算出することができる関数です。
ROW関数は行番号を算出することができる関数です。
つまり、行番号を2で除算してあまりのあるなしで、販売数と金額とをわけて結果を算出することができます。
D列に奇数行なのか偶数行なのか、判断させる数式を作ります。
D1をクリックして、次の数式を作ります。
=MOD(ROW(),2)
算出したら、オートフィルで数式をコピーします。
この数式。
どこかで見たことがある人もいるかもしれませんね。
条件付き書式で一行おきにセルに塗りつぶしを設定するのと同じですね。
この数式の意味ですが、
ROW関数は、行番号を算出します。
MOD関数で、その行番号を、「2」で除算した結果の余りを算出します。
余りが0ならば偶数ですし、1ならば奇数というのがわかります。
最後に、それぞれの合計値を算出します。ここで登場するのはSUMIF関数。
C9にSUMIF関数の数式をつくっていきます。
範囲は、$D$1:$D$8。MOD&ROW関数で算出したところが範囲になります。
検索条件は、1。
合計範囲は、$C$1:$C$8。
範囲や合計範囲で絶対参照を設定しているのは、オートフィルで金額も算出するためです。
C9の販売数の合計値の数式は、
=SUMIF($D$1:$D$8,1,$C$1:$C$8)
C10の金額の合計値の数式は、
=SUMIF($D$1:$D$8,0,$C$1:$C$8)
これで、一行おきの値を使った、合計値を算出することができました。
現場では、関数をつかうといいのか、それとも他の方法がいいのか、アレコレ考えてみると意外な方法を見つけることが出来るかもしれませんね。