【EXCEL関数】フィルタをかけて集計するときに非表示の行も集計されてしまう問題をSUBTOTALで解決

excelでデータ集計しているときに個人的に面倒くさい(かった)現象の上位に、

「フィルタをかけて集計時に、非表示の行も集計されてしまう問題」がありました。

どういうことかというと、例えば以下のような売上データがあったとして、、

※amount行が売上高、order_month行は12月分までデータがあるとします。

3月と9月と11月の売上高の合計を出したいとします。

フィルタを知っている人はこう思います。

よし、order_monthで3月と9月と11月にチェックを入れてフィルタをかけて(3月と9月と11月のデータのみ表示させて)、表示されたもののamount列をSUMすれば一発で解決だ!

やってみます。チェックを入れて、、

amount列をSUMする、、と。

はい、でました。ほしい数字は

25,826,300

だそうです。一応確かめてみましょう。

各月ごとの集計結果がこれなので、3月と9月と11月を足すと、、

8229000

あれ、さっきよりだいぶ数字が小さい。

 

なぜこうなるかというと、SUM関数では非表示になっている行も集計対象に含まれてしまうからです。

この表は月の昇順にデータが並んでいるので、3月9月11月でフィルタをかけてSUMすると、非表示になっているその間の月の行も合計されていることになります。つまり、3月~11月までの行の集計になってしまっていたんですね。

ですから、本来はフィルタをかけて一発ぽんと出したいところを、わざわざ月ごとに集計して後から足して、なんて余計な手間が発生してしまいます。

面倒くさい、なんとかはじめの方法で出せないものか、、、

 

そこで登場するのがSUBTOTAL関数です。

この関数、フィルタをかけた状態でも、表示されている行のみの集計を行ってくれる便利な子なんです。

構文

SUBTOTAL(集計方法,範囲 1,[範囲 2],…)

(https://support.office.com/ja-jp/article/subtotal-%E9%96%A2%E6%95%B0-7b027003-f060-4ade-9040-e478765b9939)

集計方法は合計(SUM)だけでなく、平均や最大最小等いろいろ選べます。

今回は合計を出したいので、第一引数には”9”を選択します。

それでもって、最初にやった時と同じように、表示されている中で足しあげたい範囲を指定してあげれば

はい、正しい値がでました。

 

これでEXCELマスターにまた一歩近づきました。

おわり