「売上の成長率が5%、10%、−5%だったとき、平均成長率は何%ですか?」
こう聞かれたら、AVERAGE関数で計算しようとする方が多いのではないでしょうか。でもAVERAGEで出した平均成長率は、実際の最終結果と合わないことがあります。
Googleスプレッドシートで成長率や利率の「正しい平均」を求めるには、幾何平均という計算方法が必要です。この記事では、GEOMEAN関数の基本の書き方から実務での活用例、AVERAGEとの違いまで解説します。
スプレッドシートのGEOMEAN関数とは?幾何平均で正しい平均成長率を求める
GEOMEAN関数(読み方: ジオミーン関数)は、データの幾何平均を返す統計関数です。「GEOMEAN」は英語の「Geometric Mean(幾何平均)」の略で、相乗平均とも呼ばれます。
幾何平均とは、すべての値を掛け合わせてn乗根を取る計算方法です。計算式は (x1 × x2 × ... × xn)^(1/n) です。
たとえば2と8の幾何平均は √(2×8) = √16 = 4 になります。算術平均(AVERAGE)だと (2+8)÷2 = 5 です。掛け算ベースで考えるか、足し算ベースで考えるかの違いですね。
GEOMEAN関数にできることをまとめると、次のとおりです。
- 成長率や倍率など、掛け算で変化するデータの「正しい平均」を求める
- AVERAGE関数では過大評価になるケースを正確に計算できる
- 年平均成長率(CAGR)の計算に活用できる
- 複利計算の平均利率を求めるのに最適
NOTE
GEOMEAN関数はGoogleスプレッドシートの全バージョンで使えます。ExcelのGEOMEAN関数と互換性があるので、同じ数式をそのまま使えますよ。
算術平均(AVERAGE)との違い
GEOMEAN関数の最大のポイントは、AVERAGEとの使い分けです。
| 項目 | AVERAGE(算術平均) | GEOMEAN(幾何平均) |
|---|---|---|
| 計算方法 | 合計 ÷ 個数 | 全部掛けてn乗根 |
| 向いているデータ | 足し算で変化するデータ | 掛け算で変化するデータ |
| 具体例 | テストの点数、気温 | 成長率、利率、倍率 |
| 外れ値の影響 | 受けやすい | 比較的受けにくい |
足し算ベースのデータにはAVERAGE、掛け算ベースのデータにはGEOMEANです。このシンプルなルールを覚えておけば迷いません。
幾何平均はいつ使うのか
幾何平均の出番は「掛け算で変化するデータ」です。具体的には次のような場面で使います。
- 成長率の平均: 売上が毎年何%ずつ伸びたかの平均を求めるとき
- 投資の平均利回り: 複利で運用した資産の年平均リターン
- 人口増加率: 年ごとの増加率から平均増加率を計算するとき
- 比率・倍率の平均: スケールが異なる比率データの代表値
共通しているのは「前の値に倍率を掛ける」構造です。このようなデータでAVERAGEを使うと、結果が実態とズレてしまいます。
GEOMEAN関数の書き方(構文と引数)
基本構文
=GEOMEAN(値1, [値2, ...])
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値1 | 必須 | 数値、またはセル範囲。正の数のみ |
| 値2, … | 任意 | 追加の数値またはセル範囲(最大30個) |
引数はすべて正の数である必要があります。0やマイナスの値が含まれていると #NUM! エラーになるので注意してください。
WARNING
テキストや論理値(TRUE/FALSE)はセル範囲に含まれていても無視されます。ただし、引数に直接 TRUE を入力すると1として扱われます。
基本的な使い方
実際にGEOMEAN関数を使ってみましょう。
ある会社の4年間の売上成長率を記録したとします。各年の成長倍率をセルに入力しています。
| A列(年) | B列(成長倍率) | 意味 | |
|---|---|---|---|
| 2行目 | 1年目 | 1.05 | 5%成長 |
| 3行目 | 2年目 | 1.10 | 10%成長 |
| 4行目 | 3年目 | 0.95 | 5%減少 |
| 5行目 | 4年目 | 1.08 | 8%成長 |
ここで重要なのは、成長率を「倍率」で入力する点です。5%成長なら1.05、5%減少なら0.95として入力します。
C2セルに次の数式を入力してみてください。
=GEOMEAN(B2:B5)
結果は約 1.0436 です。ここから1を引くと約0.0436、つまり年平均成長率は約4.4%だとわかります。
試しにAVERAGE関数で同じデータを計算すると =AVERAGE(B2:B5) は1.045、つまり4.5%です。わずかな差に見えますが、データ数が多くなったり変動が大きくなると差はどんどん広がります。
TIP
成長率をGEOMEAN関数に渡すときは、必ず「1 + 成長率」の倍率形式にしてください。成長率そのもの(0.05, 0.10, −0.05)を渡すと、マイナスの値で
#NUM!エラーになります。
実践的な使い方・応用例
年間売上成長率の平均を求める(AVERAGEとの比較)
ここでは、AVERAGEとGEOMEANの差が実感できる具体例を見てみましょう。
ある会社の5年間の売上データがあります。
| A列(年度) | B列(売上・万円) | C列(成長倍率) | |
|---|---|---|---|
| 2行目 | 2021年 | 1,000 | — |
| 3行目 | 2022年 | 1,500 | 1.50 |
| 4行目 | 2023年 | 1,200 | 0.80 |
| 5行目 | 2024年 | 1,800 | 1.50 |
| 6行目 | 2025年 | 1,440 | 0.80 |
C列の成長倍率は =B3/B2 のように前年比で計算しています。
=GEOMEAN(C3:C6)
結果は約 1.0954 です。年平均成長率は約9.5%です。
一方、AVERAGEで計算すると次のようになります。
=AVERAGE(C3:C6)
結果は 1.15。つまり年平均成長率が15%という計算です。
でも実際の売上を見てください。1,000万円から1,440万円への4年間の増加です。年平均15%成長なら4年後は 1,000 × 1.15^4 ≒ 1,749万円 になるはずですが、実際は1,440万円です。GEOMEANの9.5%なら 1,000 × 1.0954^4 ≒ 1,440万円 でピッタリ合います。
このように、成長率の平均はGEOMEANを使わないと正しい値になりません。AVERAGEは成長と減少が交互にあるデータで過大評価してしまうのです。
複利計算・平均利率への応用
投資や預金の平均利回りを計算するときにもGEOMEAN関数が活躍します。
ある投資信託の5年間の年間リターンが次のとおりだったとします。
| 年 | リターン | 倍率 |
|---|---|---|
| 1年目 | +12% | 1.12 |
| 2年目 | −8% | 0.92 |
| 3年目 | +15% | 1.15 |
| 4年目 | +3% | 1.03 |
| 5年目 | −5% | 0.95 |
倍率をB2:B6に入力して、次の数式を使います。
=GEOMEAN(B2:B6) - 1
結果は約 0.0296、つまり年平均リターンは約3.0%です。
AVERAGEだと (12-8+15+3-5)÷5 = 3.4% になります。GEOMEANのほうが低い値になるのは、複利効果(マイナスの年の影響が後の利益を目減りさせる効果)を正しく反映しているからです。
TIP
GEOMEAN関数の計算は、POWER関数を使って手動で再現できます。
=POWER(PRODUCT(B2:B6), 1/COUNT(B2:B6))と書くと同じ結果です。GEOMEAN関数はこの計算を一発でやってくれるわけですね。
よくあるエラーと対処法
GEOMEAN関数で遭遇しやすいエラーをまとめます。
| エラー | 原因 | 対処法 |
|---|---|---|
#NUM! | 引数に0以下の値がある、またはデータが0個 | 成長率は倍率(1+r)で入力する。0は除外するか1に置き換える。セル範囲にデータが入っているか確認する |
#VALUE! | 数値以外のテキストが引数に直接指定されている | セル範囲ならテキストは無視されるが、直接入力は不可 |
特に多いのが #NUM! エラーです。GEOMEAN関数は内部でLN関数(自然対数)を使って計算しています。対数は0以下の値に対して定義できないため、エラーになるのです。
成長率データで「売上がゼロの年」がある場合はどうすればよいでしょうか。倍率が0になってしまうので、その行を除外するか、ごく小さな正の値(0.001など)に置き換えて対処します。
エラーが表示されると困る場合は、IFERROR関数で囲んでおくと安心です。
=IFERROR(GEOMEAN(B2:B6), "データを確認してください")
似た関数との違い・使い分け(AVERAGE, POWER, GROWTH)
GEOMEAN関数と関連する関数の違いを整理しておきましょう。
| 関数 | 返す値 | 用途 |
|---|---|---|
| GEOMEAN | 幾何平均 | 成長率・利率の正しい平均 |
| AVERAGE | 算術平均 | 足し算ベースのデータの平均 |
| POWER | べき乗の値 | GEOMEANの手動計算に使える |
| GROWTH | 指数回帰の予測値 | 将来値の予測 |
| HARMEAN | 調和平均 | 速度・レートの平均 |
GEOMEANは「過去データの代表値」を出す関数です。一方、GROWTH関数は「将来の値を予測する」関数です。目的がまったく違うので注意してください。
また、EXP関数やLN関数を組み合わせると、GEOMEAN関数を別の書き方で表現できます。=EXP(AVERAGE(LN(B2:B6))) はGEOMEAN(B2:B6)と同じ結果を返します。対数の世界で算術平均を取って元に戻す、という仕組みですね。
まとめ
GEOMEAN関数は、成長率や倍率など掛け算で変化するデータの正しい平均を求める関数です。
この記事のポイント
- 構文は
=GEOMEAN(値1, [値2, ...])で、引数はすべて正の数 - 成長率を渡すときは「1 + 成長率」の倍率形式にする
- AVERAGEで成長率の平均を出すと過大評価になる。GEOMEANを使えば実際の最終値と一致する
- 0以下の値が含まれると
#NUM!エラー。倍率形式なら減少も正の値で表現できる - GROWTHは将来予測、GEOMEANは過去データの代表値。目的で使い分ける
関連する関数
GEOMEAN関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
- AVERAGE関数の使い方 — 算術平均を求める
- POWER関数の使い方 — べき乗を計算する
- GROWTH関数の使い方 — 指数回帰で将来値を予測する
- EXP関数の使い方 — 自然対数の底eのべき乗を求める
- LN関数の使い方 — 自然対数を求める
