「データの二乗の合計を出したいけど、いちいちセルごとに二乗してからSUMするのは面倒だな……」。こんな場面に出くわしたことはありませんか?
手作業で二乗と合計を分けて計算すると、数式が長くなるうえにミスも起きやすくなります。もっと手軽に平方和を求められたら便利ですよね。
そんなときに使うのがスプレッドシートのSUMSQ関数です。この記事では基本の書き方から実務での活用例まで解説します。SUM+POWER関数で代用する方法との違いもあわせて整理しました。
SUMSQ関数とは?スプレッドシートで平方和を求める関数
SUMSQ関数(読み方: サムスクエア関数)は、指定した数値の平方和(各値の2乗の合計)を返す関数です。「SUMSQ」は「SUM(合計)+ SQuare(二乗)」の略です。
平方和とは、それぞれの値を2乗してから合計した値のことです。たとえば 3 と 4 の平方和は、3の2乗(9)+ 4の2乗(16)= 25 になります。
SUMSQ関数にできることをまとめると、次のとおりです。
- 複数の数値の二乗の合計(平方和)をワンステップで求める
- 偏差平方和の計算に使う(分散・標準偏差の基礎)
- ユークリッド距離の計算に使う(ピタゴラスの定理)
- VAR関数やSTDEV関数の裏側で使われている計算を手動で確認する
NOTE
SUMSQ関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作は同じです。
SUMSQ関数の書き方(構文と引数)
基本構文
=SUMSQ(値1, [値2], ...)
カッコの中に、平方和を求めたい数値やセル範囲を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値1 | 必須 | 平方和を求めたい最初の値またはセル範囲 |
| 値2, … | 任意 | 追加の値またはセル範囲。最大255個まで指定可能 |
引数にはセル参照、セル範囲、数値を直接指定できます。
TIP
セル範囲に含まれる文字列・TRUE/FALSE・空白セルは自動的に無視されます。数値だけが計算の対象になりますよ。ただし、引数に直接TRUE/FALSEを指定した場合はTRUE=1、FALSE=0として計算されます。
SUMSQ関数の基本的な使い方
以下のテストスコアのデータでSUMSQ関数を使ってみましょう。
A2からA6に5人分のスコアが入っているとします。
| A列(スコア) | |
|---|---|
| 2行目 | 3 |
| 3行目 | 4 |
| 4行目 | 5 |
| 5行目 | 6 |
| 6行目 | 7 |
セル範囲で指定する
=SUMSQ(A2:A6)
結果は 135 です。内訳は 3^2 + 4^2 + 5^2 + 6^2 + 7^2 = 9 + 16 + 25 + 36 + 49 = 135 です。
数値を直接指定する
=SUMSQ(3, 4)
結果は 25 です。3^2 + 4^2 = 9 + 16 = 25 ですね。
複数の範囲を組み合わせる
=SUMSQ(A2:A4, A5:A6)
複数のセル範囲をカンマで区切って指定できます。結果はA2:A6を一括指定した場合と同じ 135 です。
SUMSQ関数の実務での活用例
偏差平方和を求める(分散計算の基礎)
偏差平方和とは「各データと平均値の差(偏差)の二乗を合計した値」です。分散や標準偏差を計算するときの中間ステップになります。
ちょっとむずかしく聞こえますが、やっていることはシンプルです。SUMSQとARRAYFORMULAを組み合わせるだけで求められます。
B2からB6に売上データ(万円)が入っているとします。
| B列(売上) | |
|---|---|
| 2行目 | 120 |
| 3行目 | 85 |
| 4行目 | 200 |
| 5行目 | 150 |
| 6行目 | 95 |
=SUMSQ(ARRAYFORMULA(B2:B6 - AVERAGE(B2:B6)))
この数式では、まずAVERAGE関数で平均値(130)を求めます。次にARRAYFORMULAで各セルから平均値を引いた偏差を配列として作ります。最後にSUMSQ関数で偏差の平方和を計算します。
結果は 8,650 です。この値を「データ個数 – 1」で割ると標本分散、「データ個数」で割ると母集団の分散になります。
TIP
VAR関数を使えば分散は1ステップで求められます。偏差平方和を直接確認したいときにSUMSQ関数が便利ですよ。
ユークリッド距離を計算する(ピタゴラスの定理)
2点間の直線距離(ユークリッド距離)は、各座標の差の平方和の平方根で求められます。ピタゴラスの定理そのものです。
たとえば、2つの店舗の座標が以下のとおりだとします。
| A列(X座標) | B列(Y座標) | |
|---|---|---|
| 2行目(店舗A) | 1 | 2 |
| 3行目(店舗B) | 4 | 6 |
=SQRT(SUMSQ(A3-A2, B3-B2))
SUMSQ(3, 4) = 25 の平方根なので、結果は 5 です。SQRT関数(平方根を返す関数)とSUMSQを組み合わせるだけで距離が求められます。
3次元以上の座標でも同じパターンで計算できます。引数を増やすだけなので、次元数が増えても数式はシンプルなままです。
SUM+POWER関数との違い
SUMSQ関数を使わなくても、SUM関数とPOWER関数(べき乗を返す関数)を組み合わせれば同じ結果は得られます。
=SUMSQ(A2:A6)
=SUM(ARRAYFORMULA(POWER(A2:A6, 2)))
どちらも結果は同じ 135 ですが、以下の違いがあります。
| 項目 | SUMSQ | SUM+POWER |
|---|---|---|
| 数式の長さ | 短い | 長い(ARRAYFORMULAも必要) |
| 可読性 | 「平方和」と一目でわかる | 2乗→合計の2ステップで読む |
| べき乗の変更 | 2乗固定 | POWER(範囲, 3)で3乗など自由 |
2乗の合計を求めるだけならSUMSQ関数がシンプルです。3乗以上のべき乗和が必要な場合はSUM+POWERの組み合わせを使ってください。
よくあるエラーと対処法
#VALUE!エラー
数値に変換できない文字列を引数に直接指定すると発生します。
=SUMSQ("abc", 4) → #VALUE!エラー
=SUMSQ(3, 4) → 正常に計算される(結果: 25)
セル範囲内に文字列がある場合は自動で無視されるので、エラーにはなりません。直接引数として文字列を渡した場合にのみ発生します。
結果が想定より小さい
セル範囲に文字列や空白が混ざっていると、そのセルは計算から除外されます。データ件数が想定より少なくなっている可能性があります。
COUNT関数で数値セルの個数を確認してみてください。
=COUNT(A2:A10)
数値として認識されているセルの個数がわかります。想定より少なければ、文字列が混ざっているセルを修正しましょう。
TIP
数字が文字列として入力されている場合もあります。セルを選んで左上に「’」(アポストロフィ)が見えたら文字列扱いです。セルの書式を「数値」に変更してみてください。
まとめ
SUMSQ関数は、指定した数値の平方和(各値の2乗の合計)を返す関数です。
この記事のポイント
- 構文は
=SUMSQ(値1, [値2], ...)で、セル範囲を指定するだけ - 平方和とは「各値を2乗して合計した値」のこと
- 偏差平方和の計算にはARRAYFORMULAと組み合わせて使う
- ユークリッド距離の計算にはSQRT関数と組み合わせて使う
- SUM+POWERでも同じ結果は得られるが、SUMSQのほうがシンプル
- セル範囲内の文字列・空白・論理値は自動で無視される
次のステップ:関連する統計関数
SUMSQ関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。統計分析の幅が広がりますよ。
