解説
絞り込んだのに合計が変わらない?SheetsのSUBTOTALでフィルターと非表示を分けよう
SUMとSUBTOTALの9・109を比較。フィルターで除いた行と手動で隠した行を持つ表で、1000・800・500になる条件を整理。

表をフィルターで絞ったのに、SUMの合計が同じまま。画面に見えている行だけを集計したいなら、SUBTOTALの条件を確認してみよう。
このページは、Googleスプレッドシートで数式やフィルターを使ったことがある人向け。合計の対象と、行を隠した方法を分けて比べるよ。共有中の業務表を変えず、空の練習シートを使おう。
まずは四行だけの表を用意する
A1に区分、B1に金額を入れ、A2:B5を次の表にする。金額は文字列ではなく数値として入力するよ。
| 行 | 区分 | 金額 |
|---|---|---|
| 2 | A | 100 |
| 3 | B | 200 |
| 4 | A | 300 |
| 5 | A | 400 |
集計結果は、隠す可能性のある行から離れたD7:D9へ置く。表示が消えたセルを、計算が消えたものと取り違えないためだよ。
D7: =SUM(B2:B5)
D8: =SUBTOTAL(9, B2:B5)
D9: =SUBTOTAL(109, B2:B5)
この表記のD7:などは説明用のセル位置なので、セルへ入れるのは等号以降の数式だけ。初めはどの行も隠さず、三つとも1000になることを確かめる。
フィルターで除いた行はSUBTOTALの対象外
A1:B5にフィルターを設定し、区分Aだけに絞る。区分Bの200の行が表示から外れるね。
SUMは、指定範囲に残っている値を足すので1000のまま。一方SUBTOTALでは、フィルターによって表示されなくなった行を、関数コードにかかわらず集計しない。この段階では9も109も800になるよ。
SUBTOTALの最初の数字は、どの集計を使うかを表す関数コード。9は合計を求めるSUMに対応している。9という行番号を指定しているわけではないよ。
手動で隠した行まで除くなら109
次に、区分Aの300がある4行目を手動で非表示にする。フィルターで除外された3行目と、手動で隠した4行目が両方ある状態だよ。
| 状態 | SUM | SUBTOTALの9 | SUBTOTALの109 |
|---|---|---|---|
| 全行表示 | 1000 | 1000 | 1000 |
| フィルターで200を除く | 1000 | 800 | 800 |
| さらに300の行を手動で隠す | 1000 | 800 | 500 |
9では手動の非表示行を含み、109ではその行も除く。どちらもフィルターによる除外行は含まないので、「見えないなら全部同じ扱い」と覚えないでね。
条件で足すSUMIFSとは目的が違う
区分Aの合計を、画面の見え方と関係なく求めたいならSUMIF・SUMIFSという選択肢もある。一方SUBTOTALは、フィルターなどで変わる表示対象に合わせて小計を出したいときの道具だよ。
他の人とフィルターを操作する表では、集計がどの表示条件を前提にしているかも伝えよう。表示された500だけを別の資料へ貼る前に、絞り込み条件と非表示行の有無を確認したいね。
入れ子の小計と、元へ戻す手順
指定範囲に別のSUBTOTALを含むセルがあると、二重集計を避けるためにそのセルは無視される。普通の数値だけの表と同じつもりで、小計行を追加しないようにしよう。
練習を戻すときは、手動で隠した4行目を再表示し、フィルターも解除する。三つの合計が再び1000になるかを確認できるよ。行を隠すことと、データを削除することは別だね。
2026年10月29日にGoogle公式の関数コード・除外条件・入れ子の扱いを確認し、表の三段階の結果を独立の計算で照合した。実アカウントでのSheets操作や数式実行は行っていないよ。フィルタ表示、SUMIFとSUMIFSも合わせて読もう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。