【SUBTOTAL関数】フィルターと相性バツグン!初心者向けにやさしく解説

エクセル・実務

「合計ならSUM関数で足りるのに、なんでSUBTOTAL(サブトータル)なんて使うの?」——最初はみんなそう思います。でも、フィルターで表を絞り込みながら集計する場面に一度でも出会うと、この関数の便利さが一気にわかります。この記事では、Excelを触りはじめたばかりの方に向けて、SUBTOTAL関数を図解と例をたっぷり使って、ゼロからやさしく説明します。

1. SUBTOTAL関数とは? ひとことで言うと

SUBTOTAL関数を、思いきりシンプルに言うとこうです。

💡 SUBTOTALをひとことで

「合計・平均・件数など、いろいろな集計を1つでこなす関数」。しかも フィルターで見えなくなった行は集計に入れない という、他の関数にはない特技を持っています。

ふつう、Excelで合計を出すときはSUM関数、平均ならAVERAGE関数、件数ならCOUNT関数……と、目的ごとに関数を使い分けますよね。SUBTOTALは、その使い分けを「番号」で切り替えられる、いわば“万能スイッチ”のような関数です。

そして本当に大事なのはここから。SUMやAVERAGEは、フィルターで行を隠しても、隠れた行まで計算に入れてしまいます。ところがSUBTOTALは、画面に見えている行だけを集計してくれます。「絞り込んだ結果の合計が知りたい」ときに、まさにドンピシャの関数なんです。

2. 基本の書き方(構文)を覚えよう

まずは形を目に焼き付けましょう。SUBTOTAL関数の書き方はこれだけです。

=SUBTOTAL(集計方法, 範囲)

2つの部品でできています。順番に見ていきます。

部品意味
集計方法(第1引数)「合計にする? 平均にする? 件数にする?」を指定する番号。たとえば 9 なら合計、1 なら平均。番号一覧は次の章で。
範囲(第2引数)集計したいセルの範囲。C2:C11 のように指定します。カンマで区切って複数範囲もOK。

たとえば、C2からC11の売上を合計したいなら、こう書きます。

=SUBTOTAL(9, C2:C11) ← 9 は「合計(SUM)」の番号

🔰 覚え方のコツ

「まず番号で“何をするか”を決めて、次に“どこを”集計するか」の順。SUMと違うのは、先頭に番号が1つ増えるだけです。=SUM(C2:C11) が =SUBTOTAL(9, C2:C11) になる、と考えると気楽ですよ。

3. 「集計方法」の番号一覧(1〜11/101〜111)

集計方法の番号は、下の表のとおりです。1〜11と、それに100を足した101〜111の2セットがあります(違いは第6章でじっくり説明します。今は「2列ある」とだけ押さえてください)。

集計内容番号
(1〜11)
番号
(101〜111)
同じことをする関数
平均1101AVERAGE
数値の個数2102COUNT
データの個数(空白以外)3103COUNTA
最大値4104MAX
最小値5105MIN
積(掛け算)6106PRODUCT
標準偏差(標本)7107STDEV.S
標準偏差(母集団)8108STDEV.P
合計9109SUM
分散(標本)10110VAR.S
分散(母集団)11111VAR.P

✅ 初心者がよく使うのはこの4つ

ぜんぶ覚える必要はありません。実務でよく使うのは、9(合計)3(データの個数)1(平均)4/5(最大・最小)くらい。まずは「9=合計」だけ覚えれば、今日から使えます。

4. 最大の魅力①:フィルターで隠れた行は集計しない

ここがSUBTOTALの一番の見せ場です。下の売上表で比べてみましょう。

まずはフィルターをかける前。全10件の売上です。

店舗担当売上(円)
新宿店佐藤120,000
渋谷店鈴木98,000
新宿店高橋150,000
池袋店田中75,000
渋谷店伊藤110,000
新宿店山本88,000
池袋店中村62,000
渋谷店小林134,000
新宿店加藤101,000
池袋店吉田79,000
合計1,017,000

この時点では、SUM もSUBTOTAL も同じ「1,017,000」を返します。

では、フィルターで「新宿店」だけに絞り込むと、どうなるか。グレーの取り消し線の行が、フィルターで隠れた行です。

店舗担当売上(円)
新宿店佐藤120,000
渋谷店鈴木98,000
新宿店高橋150,000
池袋店田中75,000
渋谷店伊藤110,000
新宿店山本88,000
池袋店中村62,000
渋谷店小林134,000
新宿店加藤101,000
池袋店吉田79,000

このとき、2つの関数はまったく違う答えを返します。

数式答えなぜ?
=SUM(C2:C11)1,017,000隠れた行も足してしまう(絞り込みを無視)
=SUBTOTAL(9, C2:C11)459,000見えている新宿店4件だけを合計(120,000+150,000+88,000+101,000)

✅ ここが決定的な差

「絞り込んだ結果の合計がほしい」なら、SUMではなくSUBTOTAL。しかも便利なのは、フィルターを別の店舗に切り替えるたびに、答えが自動で変わること。渋谷店に絞れば渋谷店の合計、池袋店に絞れば池袋店の合計が、同じ1つの数式でパッと出ます。

5. 最大の魅力②:SUBTOTAL同士は二重で数えない

もう1つ、地味だけどありがたい特技があります。それは「SUBTOTALは、範囲の中にある別のSUBTOTALの結果を無視する」という性質です。

言葉だと難しいので、例で見ましょう。店舗ごとに小計を作り、最後に総合計を出す表です。

内容金額
2〜4新宿店(3件)
5新宿店 小計 =SUBTOTAL(9,C2:C4)370,000
6〜8渋谷店(3件)
9渋谷店 小計 =SUBTOTAL(9,C6:C8)342,000
10総合計 =SUBTOTAL(9,C2:C9)712,000

総合計の範囲 C2:C9 の中には「小計」の行(C5・C9)も含まれています。

ここで注目。総合計の =SUBTOTAL(9, C2:C9) は、範囲の中に小計セル(370,000と342,000)を巻き込んでいます。ふつうに考えると「明細+小計」を二重に足して、答えが倍近くになりそうですよね。

でも大丈夫。SUBTOTALは、範囲内にある他のSUBTOTALの結果を自動的に飛ばしてくれるので、明細だけをきれいに合計してくれます。もしここをSUMで書いていたら、小計まで足してしまって答えがおかしくなります。

🔰 だから「小計」機能でも使われている

Excelの[データ]タブにある「小計」機能(自動で小計行を挿入してくれる機能)は、裏側でこのSUBTOTALを使っています。二重集計を勝手に避けてくれるからこそ、あの機能が成り立っているんですね。

6. 「9」と「109」の違いをやさしく解説

第3章で出てきた「番号が2列ある」問題を、ここで回収します。結論はこの1点だけです。

✅ 9 と 109 の違いは「手で隠した行」の扱い

番号フィルターで隠れた行右クリック等で手動で非表示にした行
9(1〜11)集計しない集計する(隠しても足す)
109(101〜111)集計しない集計しない(隠せば除く)

ポイントを整理します。

  • フィルターで隠した行は、9でも109でもどちらも集計から外れます。ここは共通です。
  • 差が出るのは「行番号を右クリック→非表示」などで手動で隠した行」のときだけ。9は手動非表示を無視して足しますが、109は手動非表示も除きます。

🔰 迷ったらどっち?

フィルターしか使わないなら、9でも109でも結果は同じです。初心者のうちは、昔からある見慣れた「9」で覚えてOK。「行を手で隠しても、隠した行を集計から外したい」という場面が出てきたら、そのとき「109」を思い出してください。

7. 実例でマスター(例が豊富)

ここからは、コピペ感覚で使える実例をたっぷり並べます。すべて、下の「経費明細」を題材にします。

No.日付科目金額(円)
14/2交通費1,280
24/5消耗品費3,400
34/8交通費640
44/11接待交際費12,000
54/15消耗品費2,180
64/18交通費1,540
74/22接待交際費8,600
84/25消耗品費5,020

金額はセル D2〜D9 に入っているものとします。

例1:合計を出す(番号 9)

=SUBTOTAL(9, D2:D9) → 34,660(全件の合計)

フィルターで「交通費」だけに絞れば、同じ数式のまま自動で 3,460(1,280+640+1,540)に変わります。ここがSUMとの決定的な違いでしたね。

例2:件数を数える(番号 3)

=SUBTOTAL(3, D2:D9) → 8(データが入っている件数)

「消耗品費」に絞れば 3 に変わります。絞り込んだ結果が何件あるかを数えたいときの定番です。番号3(COUNTA相当)は文字でも数値でも数えるので、迷ったら3が無難です。

例3:平均を出す(番号 1)

=SUBTOTAL(1, D2:D9) → 4,332.5(全件の平均)

「接待交際費」に絞れば、その2件の平均 10,300 が出ます。「絞った条件の平均単価」を見たいときに便利です。

例4:最大・最小を出す(番号 4/5)

=SUBTOTAL(4, D2:D9) → 12,000(見えている中の最大) =SUBTOTAL(5, D2:D9) → 640(見えている中の最小)

絞り込んだ範囲での「いちばん高い経費」「いちばん安い経費」がすぐわかります。異常値のあたりをつけるのにも使えます。

例5:小計+総合計を二重集計させずに作る

第5章の応用です。科目ごとに小計を入れ、最後に総合計を =SUBTOTAL(9, …) で作れば、小計行を巻き込んでも二重にカウントされません。SUMで組むと壊れる集計表が、SUBTOTALなら安全に組めます。

例6:フィルターしても崩れない「連番」を振る(上級テク)

これは知っておくと一生モノのテクニックです。フィルターで絞り込むと、A列に手打ちした「1・2・3…」の連番は歯抜けになってしまいます。そこで、連番をこの数式で振ります(A2に入力して下へコピー)。

=SUBTOTAL(3, $D$2:D2)

ポイントは、範囲の始まりを $D$2 と固定(絶対参照)し、終わりを D2 と固定しないこと。すると各行で「先頭から自分の行までに、いくつデータがあるか」を数え、フィルターで絞っても常に 1・2・3… ときれいに振り直されます。印刷資料の通し番号などで重宝します。

🔰 なぜ $ を付けるの?

$(ドルマーク)は「ここは固定」の目印。始点だけ固定して終点を伸ばしていくことで、範囲が1行ずつ広がり、その中の件数=連番になる、という仕組みです。$は F4 キーで簡単に付けられます。

8. 初心者がやりがちな失敗と注意点

⚠️ 失敗①:番号を書き忘れる

=SUBTOTAL(D2:D9) のように第1引数の番号を抜かすとエラーになります。必ず「番号, 範囲」の2つを書きましょう。

⚠️ 失敗②:合計を SUM だと思い込む

「9」は合計ですが、うっかり =SUBTOTAL(1, …) と書くと平均が出ます。番号の意味を取り違えると、静かに間違った数字が出るので要注意。合計はいつも「9」と口に出して覚えましょう。

⚠️ 失敗③:他の列に SUBTOTAL を横並びにしたとき

集計行に =SUBTOTAL(…) を横に並べる分には問題ありません。ただし、SUBTOTALの結果セルを、別の SUM で足し込むと二重集計になります。集計はできるだけSUBTOTALで統一すると事故が減ります。

⚠️ 失敗④:非表示なのに数字が変わらない

行を「手で非表示」にしたのに合計が減らないときは、番号が9だからです。手動非表示も除きたいなら109に変えます(第6章参照)。フィルターの場合はどちらでも除かれます。

9. SUM・AGGREGATEとの使い分け

関数得意なことこんなときに
SUMただ全部を足すフィルターと無関係に「常に全件の合計」がほしいとき
SUBTOTALフィルターで見えている行だけを集計/小計との二重集計を回避絞り込みながら合計・件数・平均を見たいとき(日常はこれで十分
AGGREGATESUBTOTALの上位版。エラー値を無視するなど細かい制御ができるエラーが混じった表を集計したい等、一歩踏み込んだとき

ざっくり言えば、「全件ならSUM、絞り込みならSUBTOTAL」。この2つを押さえれば、日々の集計はほぼ回ります。AGGREGATEは「SUBTOTALで物足りなくなったら」で大丈夫です。

🧮 経理マンの一言

経理の現場で、SUBTOTALは「地味に毎日使う関数」の代表格です。私がいちばん重宝するのは、月次の経費チェックのとき。何百行もある明細をフィルターで「交際費だけ」「この部署だけ」と切り替えながら、その場で合計・件数・平均が動く——これがSUMだと、絞り込むたびに数式を組み直すハメになって、締め切り前の貴重な時間が溶けます。

それともう一つ、声を大にして言いたいのが「小計行を巻き込んでも二重に数えない」という性質。SUMで小計+総合計の表を組んで、金額が合わずに小一時間悩んだ経験、経理なら一度はあるはずです。あれ、集計をSUBTOTALで統一するだけで、そもそも起きません。合わない原因を作らない——これは経理にとって、速さ以上に価値があります。

ただし最後に一言。便利でも、「フィルターの掛け忘れ・掛け間違い」までは関数は守ってくれません。絞り込み条件が正しいか、集計対象の範囲がズレていないかは、必ず人間の目で最終確認を。ツールは判断を速くしてくれますが、判断そのものは、やっぱり私たちの仕事です。

コメント

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