スプレッドシートのGEOMEAN関数の使い方|幾何平均

スポンサーリンク

「売上の成長率が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.055%成長
3行目2年目1.1010%成長
4行目3年目0.955%減少
5行目4年目1.088%成長

ここで重要なのは、成長率を「倍率」で入力する点です。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,5001.50
4行目2023年1,2000.80
5行目2024年1,8001.50
6行目2025年1,4400.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関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。

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