フィルターをかけたデータの合計や平均などを、正しく計算したいときに便利なのが SUBTOTAL(サブトータル)関数 です。通常のSUM関数では無視されない非表示行も、SUBTOTALを使えば簡単に除外できます。
この記事では、SUBTOTAL関数の基本的な使い方、関数番号の種類、実務での活用例をわかりやすく解説します。
SUBTOTAL関数とは?
SUBTOTAL関数は、指定した集計方法(合計、平均、最大値など)で、表示されているデータだけを集計することができる関数です。
書式
=SUBTOTAL(集計方法の番号, 範囲)
引数の意味
- 集計方法の番号:どの集計を行うか(SUM、AVERAGEなど)を番号で指定
- 範囲:集計したいセル範囲
集計方法の番号一覧
SUBTOTAL関数では、集計番号の指定によって非表示行の扱いが変わります。
番号 1〜11 を指定した場合は「フィルターで非表示になった行は除外するが、手動で非表示にした行は集計に含める」動作になり、番号 101〜111 を指定した場合は「フィルターで非表示になった行に加えて、手動で非表示にした行も集計から除外する」動作になります。
なお、1~11 と 101~111 は計算に使う関数そのものは同じで、違うのは非表示行の扱いだけです。
番号 | 関数名 | 内容 |
---|---|---|
1 / 101 | AVERAGE | 平均 |
2 / 102 | COUNT | 数値セルの個数 |
3 / 103 | COUNTA | 空白以外のセルの個数 |
4 / 104 | MAX | 最大値 |
5 / 105 | MIN | 最小値 |
6 / 106 | PRODUCT | 積(掛け算の結果) |
7 / 107 | STDEV | 標本標準偏差 |
8 / 108 | STDEVP | 母標準偏差 |
9 / 109 | SUM | 合計 |
10 / 110 | VAR | 標本分散 |
11 / 111 | VARP | 母分散 |
- 1〜11:フィルターで非表示の行は除外、手動で非表示の行は含める
- 101〜111:フィルターで非表示の行に加え、手動で非表示の行も除外
基本的な使い方
例:B列の合計を求める(非表示行を除外)
=SUBTOTAL(9, B2:B100)
→ 通常のSUM関数と違い、フィルターなどで非表示になった行の値は含まれません。
例:平均を求める
=SUBTOTAL(1, C2:C50)
→ C2:C50の平均(表示行のみ)を計算
実務での活用例
1. フィルター付きリストの合計
フィルターで「営業部」のみ表示 → 売上合計だけが反映される
=SUBTOTAL(9, D2:D100)
2. 表の下部に小計・平均・最大値を表示
=SUBTOTAL(4, E2:E50) ' 最大値
=SUBTOTAL(5, E2:E50) ' 最小値
3. ピボットテーブル不要な簡易集計表に
SUBTOTALを使えば、集計用の関数を一つでまとめて管理できます。
注意点
- 範囲には連続したセルを指定するのが基本
- フィルターでの集計には「1〜11」を使用(手動非表示も除外したい場合は「101〜111」)
- 入れ子にすることはできません(他のSUBTOTAL内で使うと正しく動作しない)
SUBTOTALとSUMの違い
関数 | 非表示行の扱い | フィルター対応 |
SUBTOTAL | 表示行のみ集計される | ○ |
SUM | 非表示でも集計される | × |
まとめ
SUBTOTAL関数は、「表示されているデータだけを正確に集計したい」場面で大活躍します。フィルター付きリストやレポート作成、ピボットの代替としても有効です。複数の集計方法を1つの関数で使える便利な関数。SUM関数よりも一歩上の使い方として覚えておきましょう!
関連記事:SUM関数の使い方まとめ