DESIGN / CODE / INFRA / AI

解説

絞り込んだのに合計が変わらない?SheetsのSUBTOTALでフィルターと非表示を分けよう

SUMとSUBTOTALの9・109を比較。フィルターで除いた行と手動で隠した行を持つ表で、1000・800・500になる条件を整理。

絞り込んだのに合計が変わらない?SheetsのSUBTOTALでフィルターと非表示を分けよう
保存リストを見る →
この記事の道しるべ 5項目

表をフィルターで絞ったのに、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

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。