【VBAリファレンス|実務向け】脱・手動計算!オートフィルタ後の集計を自動化する「SUBTOTAL関数」活用術

スポンサーリンク

皆さん、こんにちは。現場で役立つVBAとExcelのテクニックを日々研究している講師です。

Excelでデータを管理していると、オートフィルタで特定の条件に絞り込む場面は非常に多いですよね。しかし、絞り込んだ後に「この合計値はいくらだろう?」と、わざわざ範囲を選択してステータスバーを覗いたり、別セルに手動で計算式を入れ直したりしていませんか?

今回は、フィルタの結果に合わせて自動的に計算値が切り替わる「SUBTOTAL関数」の、実務で差がつく使い方を解説します。

なぜSUM関数ではダメなのか?

まず、ここを理解することが重要です。通常の「SUM関数」は、非表示になっている行も含めて合計してしまいます。つまり、フィルタで隠したはずのデータまで計算対象に含まれてしまうのです。

これに対し、SUBTOTAL関数は「画面に見えている行だけ」を計算対象にするという特性を持っています。

実務で即戦力となる構文

基本の書き方は非常にシンプルです。
=SUBTOTAL(集計方法, 範囲)

例えば、合計を出したい場合は、第一引数に「9」を指定します。
=SUBTOTAL(9, C2:C100)

これで、フィルタをかけて行が隠れるたびに、合計値が動的に変化するようになります。

ここがプロのこだわり:9と109の使い分け

ここからが少し踏み込んだお話です。SUBTOTAL関数の第一引数には「9」だけでなく「109」も指定できることをご存知でしょうか。

実は、「9」は非表示行を除外しますが、「手動で行を非表示にした場合」は計算に含めてしまいます。一方で「109」を指定すると、手動で非表示にした行も、フィルタで隠した行も、すべて除外して集計してくれます。

「フィルタだけ使うなら9でいいが、念のため手動で一時的に隠すこともある」という実務の現場では、109を使うのが最も安全でミスが少ない選択です。

さらなる応用:テーブル機能を活用する

もし、対象のデータ範囲を「テーブル」に変換しているなら、もっと楽ができます。テーブルの「デザイン」タブから「集計行」にチェックを入れるだけで、自動的にSUBTOTAL関数(またはAGGREGATE関数)が組み込まれた行が一番下に追加されます。

自分で数式を入力する手間すら省けるため、メンテナンス性を考えると、この「テーブル化+集計行」という運用が、今の業務改善のトレンドと言えるでしょう。

まとめ

「見えているものだけを集計する」という単純な操作ですが、ここを自動化するだけで、集計ミスを減らし、会議や報告のスピードが劇的に向上します。

ぜひ、次回の資料作成からSUM関数をSUBTOTAL関数(あるいは109番)に書き換えてみてください。小さな改善が、皆さんの残業を確実に減らしてくれるはずです。それでは、また次回の記事でお会いしましょう。

タイトルとURLをコピーしました