SUMは、指定した範囲の数値を合計する関数です。最も基本的で、最もよく使われる関数です。
書き方は単純ですが、「合計が合わない」という相談が最も多い関数でもあります。この記事では基本に加えて、その原因の見つけ方まで扱います。
書式
=SUM(範囲1, [範囲2], ...)
範囲はいくつでも並べられます。
基本の使い方
| A | |
|---|---|
| 1 | 120 |
| 2 | 340 |
| 3 | 250 |
=SUM(A1:A3) → 710
飛び飛びのセルを足すには、カンマで区切ります。
=SUM(A1, A3, A5)
範囲と個別セルを混ぜることもできます。
=SUM(A1:A10, C1, E5:E8)
列全体を指定すれば、行が増えても数式を直す必要がありません。
=SUM(A:A)
文字列や空欄は無視されるので、見出し行を含めても問題ありません。ただし、合計を出しているセル自身を範囲に含めると循環参照になります。 列全体を使うときは、合計を別の列か別のシートに置いてください。
数値を直接足すこともできる
=SUM(100, 200, 300) → 600
ただしこの用途なら =100+200+300 で十分です。SUMの利点は範囲を扱えることにあります。
「合計が合わない」4つの原因
これが実務で最も多い問題です。原因はほぼこの4つに絞られます。
1. 数値が文字列になっている
最も多い原因です。 他システムからコピーしたデータ、CSVから読み込んだデータでよく起きます。
見分け方: セルの中身が左寄せになっていたら文字列です。数値は既定で右寄せになります。
確認する:
=COUNT(A1:A100)
COUNT は数値だけを数えます。行数より少なければ、文字列が混ざっています。
直す:
=SUM(VALUE(A1:A100))
または元データ側で「データ → 数値に変換」を行うか、*1 を掛けた作業列を作ります。
2. 範囲が足りていない
行を追加したのに、数式の範囲が古いまま。=SUM(A2:A50) のままで51行目以降が入っていない、というケースです。
対策は列全体で指定することです。=SUM(A:A) にしておけば、行を追加しても自動で含まれます。
3. 非表示の行・フィルタで隠れた行も合計されている
SUMは見えていない行も足します。フィルタで絞り込んだ状態の合計を出したいなら SUBTOTAL を使ってください。
=SUBTOTAL(109, A2:A100)
109 は「合計、非表示の行を除く」という意味です。フィルタと合計を併用する場面では、SUMではなくSUBTOTALが正解です。
4. 小数の丸め誤差
見た目は 100 なのに、実際には 100.004 が入っている、というケース。表示桁数を減らしていると気づけません。
確認する: 桁数の表示を増やすか、
=A1 - ROUND(A1, 0)
で差を見ます。
直す: 元の値を ROUND で丸めるか、合計側で =ROUND(SUM(A:A), 0) とします。表示だけ丸めても内部の値は変わらないので、計算に使うなら値そのものを丸めてください。
条件を付けて合計したいとき
「東京の分だけ」のように条件を付けるなら、SUMIF または SUMIFS を使います。
=SUMIF(A:A, "東京", C:C)
=SUMIFS(C:C, A:A, "東京", B:B, "商品A")
エラーが混ざっているとき
範囲内に #N/A や #DIV/0! が1つでもあると、SUMもエラーになります。
対策は2つあります。
元のエラーを潰す(推奨)
=IFERROR(VLOOKUP(...), 0)
合計側で無視する
=SUMIF(A2:A100, "<>#N/A")
または AGGREGATE(Excel)や QUERY(スプレッドシート)を使う方法もあります。
ただし、エラーを隠す前に原因を確認してください。 #N/A はマスタに無いデータがあるという重要な情報です。詳しくは IFERROR で扱っています。
複数シートをまたいで合計する
同じ形のシートが並んでいる場合、Excelでは次の書き方ができます。
=SUM(4月:6月!B10)
Googleスプレッドシートではこの書き方(3D参照)が使えません。 素直に足すか、{} で範囲を縦に結合します。
='4月'!B10 + '5月'!B10 + '6月'!B10
シート数が多いなら、集計用シートに IMPORTRANGE や参照をまとめる方法が確実です。
Excelとの違い
基本の書式・挙動は同じです。 違いは次の点です。
| Excel | スプレッドシート | |
|---|---|---|
3D参照 SUM(Sheet1:Sheet3!A1) |
使える | 使えない |
AGGREGATE(エラー無視の集計) |
ある | ない |
| QUERY による集計 | ない | ある |
列全体指定 SUM(A:A) |
使える | 使える |
スプレッドシートでは AGGREGATE の代わりに QUERY や FILTER を使います。
まとめ
- – 書式は
=SUM(範囲)。飛び飛びはカンマ区切り - – 列全体
A:Aで指定すると、行が増えても壊れない - – 合計が合わない原因は「文字列・範囲不足・非表示行・丸め誤差」の4つ
- – フィルタ中の合計は SUBTOTAL
- – 条件付きなら SUMIF / SUMIFS
コメントを残す