SUBTOTAL関数は、表の中から集計(合計・平均・件数など)を簡単に求めることができる関数です。
フィルターと組み合わせることで、表示されているデータだけを対象に集計できるのが大きな特徴です。
この記事では、SUBTOTAL関数の基本的な使い方をわかりやすく解説します。
SUBTOTAL関数とは?
SUBTOTAL関数は、指定した範囲に対して合計・平均・件数・最大値などの集計処理を行う関数です。
関数番号を指定することで、SUM(合計)やAVERAGE(平均)など、さまざまな集計方法を切り替えて使うことができます。
書式
=SUBTOTAL(集計方法の番号, 範囲)
引数の説明
- 集計方法の番号:どの集計を行うか(SUM、AVERAGEなど)を番号で指定
- 範囲:集計したいセル範囲
集計方法の番号一覧
| 番号 | 関数名 | 内容 |
|---|---|---|
| 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 は計算に使う関数そのものは同じで、違うのは非表示行の扱いだけです。
- 1〜11:フィルターで非表示になった行は除外するが、手動で非表示にした行は集計に含まれる。
- 101〜111:フィルターで非表示になった行に加え、手動で非表示にした行も集計から除外する。
SUBTOTAL関数の使い方
例①:合計を求める
=SUBTOTAL(9, D3:D10)
ここで使われている「9」は、集計方法を指定する番号で、「9」を指定すると
SUM(合計) が実行されます。

例②:フィルターと組み合わせる
SUBTOTAL関数を使うと、フィルターでデータを絞り込んだときに、
表示されている行だけを自動で集計できます。
たとえば、部署別の売上一覧で「営業部」だけをフィルター表示すると、
関数が自動的に「営業部の売上合計」だけを計算してくれます。

通常のSUM関数では非表示の行も合計されてしまいますが、
SUBTOTAL関数は見えているデータだけを反映できるのが大きな特徴です。
例③:「9」と「109」の違い

SUBTOTAL 関数の第1引数には「どんな集計を行うか」を示す番号を指定します。
その中でもよく使われるのが「9」と「109」です。
どちらも「合計(SUM)」を求めるための番号ですが、
手動で非表示にしたデータを合計に含めるかどうか に違いがあります。


このように、SUBTOTAL関数では、指定する集計番号によって非表示の行の扱いが変わります。
- 9 を指定した場合:
→ フィルターで非表示になった行だけを集計から除外します。 - 109 を指定した場合:
→ フィルターで非表示になった行に加え、手動で非表示にした行も集計から除外します。
注意点
- 範囲には連続したセルを指定するのが基本
- フィルターでの集計には「1〜11」を使用(手動非表示も除外したい場合は「101〜111」)
- 入れ子にすることはできません(他のSUBTOTAL内で使うと正しく動作しない)
関連関数
| 関数名 | 主な用途 |
|---|---|
| SUM関数 | 範囲内の合計を求める |
| AVERAGE関数 | 平均値を求める |
| AGGREGATE関数 | 指定した計算方法で集計 |
| COUNT関数 | 数値の個数を数える |
まとめ
SUBTOTAL関数は、「表示されているデータだけを正確に集計したい」場面で大活躍します。フィルター付きリストやレポート作成、ピボットの代替としても有効です。
複数の集計方法を1つの関数で使える便利な関数。SUM関数よりも一歩上の使い方として覚えておきましょう!

