【Excel】SUBTOTAL関数を使ってフィルターと連動した集計を行う

この記事は約3分で読めます。

今回は、Excelでフィルター機能を使ってデータを絞り込んだ際、表示されているデータだけを正確に合計したり平均を出したりできる「SUBTOTAL(サブトータル)関数」の使い方について紹介します。

SUM関数とフィルターの落とし穴

Excelで売上表などのデータを作成し、一番下の行に「SUM関数」を使って合計金額を出しているケースは非常に多いです。
しかし、この状態で「オートフィルター」を使い、「A支店のデータだけ」を表示するように絞り込みを行ったとします。画面上にはA支店のデータしか見えていませんが、一番下のSUM関数の合計金額は、「隠れているB支店やC支店の金額」も含んだ、全体の合計金額のまま変わらないという問題が起こります。
「今見えている行(抽出されたデータ)だけを計算したい」という時に、SUM関数の代わりに使うべきなのが、この「SUBTOTAL関数」です。

SUBTOTAL関数の基本的な使い方

SUBTOTAL関数は、単純な足し算だけでなく、設定する「集計方法の番号」を変えることで、平均やデータの個数など、様々な計算を行える多機能な関数です。

関数の書き方(構文)

=SUBTOTAL(集計方法, 参照1, [参照2], ...)
最初に「何の計算をするか」を番号で指定し、次に「計算する範囲」を指定するというシンプルな構造です。

見えているデータだけを合計する

合計を出したい場合は、集計方法の番号として「9」を使います。

  • 計算結果を表示させたいセル(表の一番下など)を選択します。
  • =SUBTOTAL(9, と入力します。(9は合計・SUMを意味する番号です)
  • 計算したいセル範囲(例:C2からC100まで)をマウスでドラッグして選択します。
  • カッコを閉じてEnterキーを押します。(例:=SUBTOTAL(9, C2:C100)

この数式を設定しておけば、フィルターで「A支店」だけを抽出した時、合計金額も連動して「A支店だけの合計」に自動的に切り替わるようになります。

集計方法の番号(1〜11と101〜111)の違い

SUBTOTAL関数の最初の引数である「集計方法」には、1から11までの番号と、101から111までの番号の2種類が用意されています。この違いを理解することが、関数を完璧に使いこなす鍵です。

よく使う集計方法の番号一覧

  • 1(または101): AVERAGE(平均)
  • 2(または102): COUNT(数値の個数)
  • 3(または103): COUNTA(空白以外のセルの個数)
  • 9(または109): SUM(合計)

フィルターで隠した行と、手動で隠した行

1桁の番号(1〜11)と100番台の番号(101〜111)の決定的な違いは、「手動で非表示にした行を計算に含めるかどうか」です。

  • 1桁の番号(例:9):
    フィルター機能によって隠れた行は計算から除外しますが、行番号を右クリックして「非表示」にした手動の隠し行は、計算に含めてしまいます。
  • 100番台の番号(例:109):
    フィルター機能で隠れた行も、手動で「非表示」にした行も、見えていないものはすべて計算から除外します。

「とにかく画面に見えているものだけを計算したい」という確実な結果を求める場合は、常に100番台の番号(合計なら109)を使うように習慣づけておくと、計算ミスを防ぐことができます。

SUBTOTAL関数をワンクリックで挿入する

関数をわざわざ手打ちしなくても、Excelにはこれを自動で入力してくれる便利な機能があります。
フィルターがかかっている(見出しに▼マークがついている)表のすぐ下の空白セルを選択し、「ホーム」タブの右端にある「オートサム(Σ)」ボタンをクリックしてみてください。Excelが自動的に表がフィルター状態であることを検知し、SUM関数ではなくSUBTOTAL関数を自動で入力してくれます。

まとめ

Excelでリスト形式のデータを管理し、フィルターで絞り込みながら数値を分析する際には、SUM関数ではなくSUBTOTAL関数を使うのが鉄則です。「見えているものだけを計算する」という特性と、「109(完全に表示されているものだけを合計)」という番号の指定方法を覚えておけば、集計作業の正確性と効率が大きく向上します。表を作成する時は、一番下の合計行をこの関数に変えておくことをおすすめします。