7/30/2020

Excel。一列置きのデータを合算したいけど、簡単に算出する方法はないかな?【Every other row】

Excel。一列置きのデータを合算したいけど、簡単に算出する方法はないかな?

<SUMIF関数・MOD関数・COLUMN関数>

やりたいことは簡単に思っても、実際にExcelでどうやったらいいのか?効率的なのか?考えるしまうことは結構あります。

今回は、前年と今年の売上高が並んでいる表があります。
 
H列やI列は、年ごとに合算値を算出しています。

さて、この合算値を算出するのに、効率的に行う方法はどうしたらいいのでしょうか?

合算といえば、SUM関数ですね。

H2に
=SUM(B2,D2,F2)
という数式を作成する。これも正解ですね。

ただ、SUM関数を使うのでもいいのですが、一列置きにデータがありますから、選択するにしても入力するとしても、面倒ですし、ミスを発生する危険性が高くなってしまいます。

今回は、このデータ量なのでいいですが、ボリュームが増えた場合は、さらに大変になることは、簡単に想像できます。

ポイントは、「一列置き」です。

2019年と2020年と判断できれば、条件付き和算のSUMIF関数を使うことができます。

そこで、注目するのは、列番号。

その列番号を2で除算すれば、余りがあれば『奇数』。

余りがなければ『偶数』と一列置きに分ける数値を算出することができます。

合算値を算出する前の状態の表をつかって、算出していきます。
 
B8には、次の数式を設定しました。
=MOD(COLUMN(),2)

COLUMN関数は、列番号を算出する関数です。

B列なので、2という値が算出されます。

MOD関数は、除算した余りを算出することができる関数です。

2で除算すれば、奇数偶数を確認することができます。

B列は2なので、2÷2で余りは「0(ゼロ)」ですね。

この数式をフィルハンドルをつかって、コピーします。
 
これで、奇数偶数を判断することができました。

つまり、2019年と2020年の列を判断するためのツールを得ることができたわけです。

あとは、SUMIF関数をつかうことで、簡単に2019年と2020年の合算値を算出できるわけです。
 
H2の数式は、
=SUMIF($B$8:$G$8,0,$B2:$G2)

SUMIF関数のダイアログボックスで確認してみましょう。
 
範囲は、$B$8:$G$8
フィルハンドルをつかって、数式をコピーする(オートフィル)ので、絶対参照を設定しておきます。

検索条件は、0(ゼロ)。2019年が0(ゼロ)2020年が1ですね。

合計範囲は、$B2:$G2
列だけ固定した複合参照にすることで、数式をコピーしたあとに数式を修正する必要がなくなります。

これで、2019年2020年の合算値を算出することができました。
 
これで完成といえば完成なのですが、区別をするための、8行目の数値が見えたままですね。

カッコ悪いので、0と1を表示しないようにしていきます。

間違えても、削除してはダメですね。

削除したら、SUMIF関数の検索条件が機能しませんので、元も子もありません。

また、文字の色を白色にするというのも、スマートじゃないので、表示形式のユーザー定義をつかって、非常時にしていきます。

B8:G8を範囲選択して、セルの書式設定ダイアログボックスを表示します。
 
表示形式の分類をユーザー定義にして、種類に、「;;;(セミコロン×3)」と入力してOKボタンをクリックします。

これで、非表示にすることができました。
 
;;;(セミコロン×3)」にすると、文字を非表示にすることができますので、覚えておくと重宝します。

これで、完成しましたね。

まぁ、そもそも論として、データベースにしておけば、ピボットテーブルで簡単に算出できるのですが、帳票で管理している会社も多いので、様々な手法を知っていて損はありませんね。