
Googleスプレッドシートで、非表示の行を含まない集計をしたいときに便利なSUBTOTAL関数ですが、条件を指定して集計することはできません。この記事ではフィルタ機能や、他の関数を組み合わせて「非表示の行を含まない、特定の条件と一致する」といった集計をする方法をご紹介します。
はじめに

SUBTOTAL関数は、「集計コード」を使って「非表示の行」や「小計」を除いた集計ができるのが特徴ですが、特定の条件(例:りんごだけを集計したいなど)を指定することはできません。
例:=SUBTOTAL(109,B2:B5)
SUBTOTAL関数の引数:(関数コード, 範囲1, [範囲2, …])
簡単な方法:条件付の非表示を含まない集計

「特定の条件に合うものだけを、非表示の行を含まずに集計したい」という場合、フィルター機能を使うのが最も簡単な方法です。
フィルター作成と集計の手順
- フィルターを適用する: データ範囲を選択し、「データ」→「フィルタを作成」を選びます。
- フィルターで条件を絞り込む: フィルターアイコンを開き、「条件でフィルタ」や「値でフィルタ」を使って、集計したい条件(例:A列を「りんご」で絞り込むなど)を設定します。数値や日付など、様々な条件を指定できます。
- SUBTOTAL関数で集計する: 表示されているセルだけがSUBTOTAL関数の集計対象になります。例:B列の合計を出す
=SUBTOTAL(109, B2:B5)
ポイント: 109は「非表示の行を含まない合計」のコードです。フィルターで条件に合わない行を非表示にすることで、SUBTOTAL関数がそれらの行を無視して計算します。
数式で実現する方法:条件付の非表示を含まない集計

「非表示の行を含まない、りんごの価格の合計」といった集計を、どうしても数式だけで完結させたい場合は、作業列(例:D列)を作成することで実現します。

ステップ1:非表示行のデータを除外する「作業列」を作る
SUBTOTAL関数を使って、表示されている行の値だけを抽出します。次のような数式を、オートフィルでコピーします。
例:=SUBTOTAL(109,B2)
ポイント: 表示されている行はそのままセルの値に、非表示の行は0になります

ステップ2:作業列と条件を使って最終的な合計を出す
FILTER関数を使って、作業列から特定の条件と一致する行を抽出し、SUM関数で合計します。
例:=SUM(FILTER(D2:D5,A2:A5="りんご"))
ポイント:非表示の行もFILTER関数で抽出されますが、作業列(D列)がすでに非表示の行の値を0に変換しているため、SUM関数で合計するときに0として計算されます。
FILTER関数の引数:(範囲, 条件1, [条件2, …])
まとめ
- SUBTOTAL関数に条件を付けたい場合、「フィルター機能を使った手動での絞り込み」が最も簡単で確実な方法です。
- 「どうしても数式で完結させたい!」という場合は、作業列としてSUBTOTALの結果を作り、それをSUM(FILTER(…))で処理することで実現可能です。
どちらの方法も、非表示の行を無視しつつ、特定の条件を指定して集計できるので、目的に合わせて活用してみてください。