PR

EXCELで集計結果が異なる問題を一発解決!SUM関数とSUBTOTAL関数では集計結果が異なる、そのわけとは?

初心者入門編

Excelを使っていて、「データにフィルターをかけたのに、合計値が変わらない…」「なぜか集計結果が合わない!」と悩んだことはありませんか?

SUM関数SUBTOTAL関数の決定的な違いを理解してスキルアップ

この問題のほとんどの原因は、SUM関数SUBTOTAL関数の決定的な違いにあります。この違いを理解すれば、あなたの集計作業は劇的に改善します。

1. 集計結果が異なる理由:集計対象の「スコープ」の違い

SUM関数とSUBTOTAL関数が返す結果が異なる最大の理由は、「どのセルを集計の対象とするか」という、それぞれの関数の集計対象のスコープ(範囲)が違うからです。

SUM関数:すべてを集計する

SUM関数は非常にシンプルです。指定されたセル範囲内のすべての数値を合計します。

  • 特徴: セルが非表示になっていようが、フィルターで絞り込まれていようが関係なく、指定範囲内の値はすべて合計に含まれます

  • 用途: データセット全体の総合計や、条件を無視した絶対的な合計を知りたいときに使います。

 SUBTOTAL関数:表示されているデータだけを集計する

SUBTOTAL関数は、集計前にデータの表示状態をチェックします。

  • 特徴: フィルターによって非表示になった行のデータは、集計から自動的に除外されます

  • 用途: データにフィルターを適用し、「現在画面に表示されているデータだけ」の合計、平均、個数などを求めたいときに使います。これこそが、SUBTOTAL関数がExcelの「小計機能」で使われる理由です。

2. 違いが顕著になる2つのケース

ケース 1: オートフィルターを適用したとき

これが最もよく発生する問題です。

関数 フィルター適用後(一部非表示) 結果
SUM関数 非表示の行の値を含めて合計 データ全体の合計が表示され、結果が変わらない
SUBTOTAL関数 非表示の行の値を除外して合計 表示されているデータだけの合計が表示され、結果が変わる

データを絞り込んで「今見えている分」だけを集計したい場合は、必ずSUBTOTAL関数を使う必要があります。

ケース 2: 手動で「行を非表示」にしたとき

SUBTOTAL関数は、さらに奥深い集計対象のコントロール機能を持っています。これは、SUBTOTALの最初の引数である「機能番号」によって決まります。

機能番号 行の非表示(手動) フィルター非表示
9 (SUM) 含める 除外する
109 (SUM) 除外する 除外する

もし、手動で非表示にした行(右クリックで「非表示」にした行)も集計から除外したい場合は、機能番号に100番台(109など)を使用する必要があります。

3. 一発解決!「適切な集計関数」の選び方

集計する際の目的を明確にすれば、どちらの関数を使うべきかすぐにわかります。

目的 適切な関数 推奨される集計方法 (SUMの場合)
データの全体像を知りたい SUM関数 =SUM(A:A)
フィルター後の表示データの合計を知りたい SUBTOTAL関数 =SUBTOTAL(9, A:A) または =SUBTOTAL(109, A:A)
小計や総合計の集計で二重集計を防ぎたい SUBTOTAL関数 =SUBTOTAL(109, A:A)

特に理由がなければ、フィルター操作と連動するSUBTOTAL関数 (109)をメインの集計関数として使うことを習慣づけると、「集計結果が合わない!」という問題は劇的に減少するはずです。

ぜひ、あなたのExcelシートのSUM関数をSUBTOTAL関数に置き換えて、その違いを実感してみてください!

この記事を書いているのは、【Excel問題解決Lab.】筆者「16時間」を「5秒処理」化。 Excelユーザー歴25年の経歴を持つ筆者が解説。過去には、事務員さんの年間約192時間の工数削減を実現。削減できた時間は、より付加価値の高い分析業務に充てられるようになり、社内の生産性向上と業務省力化に貢献。

タイトルとURLをコピーしました