🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel EXP, LN & LOG — 対数・成長率、そして「既定の底」の落とし穴

|

Excel EXP, LN & LOG — 対数・成長率、そして「既定の底」の落とし穴

TL;DR — 指数と対数は、同じ関係を逆方向から読んだものです。EXP(x)ex 乗を返します(連続的な成長を前向きに)。対数はそれを逆向きに走らせ — 指数のほうを 求めます。LN(x) は自然対数(底 e)、LOG10(x) は底 10、そして LOG(x, [base]) は底を選べます — ただし 既定は自然対数ではなく底 10 です。この 既定こそ、数学やコードから来た人をこっそり足取らせる落とし穴です。ゼロや負数の対数は #NUM! になります。覚えておく価値のある 2 つの数式:幾何平均 = EXP(AVERAGE(LN(range)))、そして 目標到達までの期間 = LN(target)/LN(rate)

=EXP(1)              ' -> 2.71828...   e、成長の定数
=LN(2.71828)         ' -> 1            自然対数は EXP を打ち消す
=LOG10(1000)         ' -> 3            底 10
=LOG(8, 2)           ' -> 3            「2 を何乗すれば 8 か?」
=LOG(100)            ' -> 2            底を書かない = 底 10、自然対数ではない

べき乗は数値を前向きに成長させ、対数は逆の問いを立てます — ここへたどり着くのに、どんな 指数が必要だったのか? ほとんどのスプレッドシート利用者にとって、この一族が真価を発揮するのは、 まさに 2 つの財務の仕事です。成長率を誠実に平均すること、そして「あとどれくらいで…」を解く ことです。この逆向きの関係と、既定の底というクセさえ押さえれば、あとは自然についてきます。

この記事で学べること

  • 考え方の軸:対数とは、指数について解いたべき乗 である
  • 3 つの対数 — LNLOG10LOG — と、それぞれが使う底
  • 既定の底の落とし穴:LOG(x) は底 10、自然対数ではない
  • LN(0)LOG(-5)#NUM! になる理由 — 定義域を守る
  • 本当に効く 2 つの数式:幾何平均目標到達までの年数

考え方の軸:対数とは、逆向きに解いたべき乗

POWEREXP は前向きの問いに答えます — ここから始めて、この率でこれだけの期間だけ成長 したら、どこにたどり着くか? 対数は逆に答えます — ここにたどり着いた — 底からこの値まで、 どんな指数が連れてきたのか?

=POWER(2, 3)    ' -> 8    前向き:2 の 3 乗
=LOG(8, 2)      ' -> 3    逆向き:2 を何乗すれば 8 か?

発想はこれで全部です。EXPLN は互いに厳密な逆関数で — 一方が他方を打ち消します — これが以下のあらゆる実用例の裏で動いている仕掛けです。

=LN(EXP(5))     ' -> 5
=EXP(LN(5))     ' -> 5

POWER が前進ギアなら、LN/LOG はバックギアです。年数が 分かっていて率が欲しいときに POWER が CAGR をくれたのに対し、対数は、率が分かっていて その回数が欲しいときに年数をくれます。同じ関係、違う未知数です。

3 つの対数と、それぞれが使う底

Excel には対数関数が 3 つあり、絶対に取り違えてはいけない唯一の点は、それぞれが前提とする 底です。

=LN(x)          ' 自然対数 — 底 e(2.71828...)
=LOG10(x)       ' 底 10、固定
=LOG(x)         ' 底を指定しないときは既定で底 10
=LOG(x, base)   ' 指定した任意の底 — LOG(8,2) = 3

LN は曖昧さがありません(常に底 e)。LOG10 も曖昧さがありません(常に底 10)。融通が 利くのは LOG で、その融通のよさこそが、落とし穴の潜む場所です。

既定の底の落とし穴:LOG(x) は底 10、自然対数ではない

数学でも、ほとんどのプログラミング言語でも、底を書かずに書いた log はたいてい 自然 対数を意味します。Excel では そうではありません

=LOG(100)          ' -> 2      底 10:10^2 = 100
=LN(100)           ' -> 4.605  自然対数、底 e
=LOG(100, EXP(1))  ' -> 4.605  自然対数を LOG で書き下したもの

ルール:引数が 1 つの LOG は底 10。自然対数が欲しいなら LN を使い、むき出しの LOG は 決して使わないこと。 この食い違いはエラーではなく それらしい 数値を生むため、教科書や Python スクリプトから移植したモデルが、一定の係数(およそ 2.303 倍、2 つの底の比)だけこっそり ずれることがあります。迷ったら底を明示的に書いて、曖昧さをすべて消しましょう:LOG(x, 10) または LOG(x, EXP(1)) です。

定義域エラー:LN(0) と負数の対数は #NUM!

対数は 正の 数に対してしか定義されていないため、Excel はゼロや負の入力に対して #NUM! を返します。

=LN(0)      ' -> #NUM!
=LOG(-5)    ' -> #NUM!
=LN(-3)     ' -> #NUM!

これが実務で牙をむくのは、データの列を対数変換するとき — グラフの軸、成長率の計算、回帰の ため — に、範囲の中に迷い込んだゼロや負数が 1 つ紛れているときです。変換の前に定義域を守り ましょう。たとえば範囲を絞り込むか、=IF(x>0, LN(x), NA()) で判定して、計算全体を巻き込んで 壊すのではなく、問題の行が見えるようにします。これは、POWER & SQRT ガイドで SQRT が負数を拒むのと同じ、定義域を守る規律です。

本当に効く 2 つの数式

科学的な用途をそぎ落とせば、この一族に対するビジネス上のニーズはほぼすべて、2 つの数式に 帰着します。この 2 つを覚えれば、価値の 95% を手にしたことになります。

1. 幾何平均 — 成長率を誠実に平均する。 年ごとの成長率を素の AVERAGE で平均すると、 複利での実績を過大評価してしまいます。幾何平均はそれを正します。そして対数を経由する道は、 範囲全体にわたってそれを計算する堅牢な方法です。

=EXP(AVERAGE(LN(growth_ratios)))    ' 比率の幾何平均
' 1.10, 0.95, 1.20 のような比率(+10%、-5%、+20% の推移)

これがうまくいくのは、対数が掛け算を足し算に変える からです。対数を平均してから EXP で 戻すのは、積の n 乗根をとるのと同じこと — 扱いにくい積の項なしの幾何平均です。(Excel には GEOMEAN 関数もあります。対数の形を知っておく価値があるのは、FILTER や重み、条件と 組み合わせられるからです。)

2. 目標までの期間 — 「あとどれくらいで…」。 率が分かっていて、目標に到達するまでの期間の 数が欲しいとき、対数はそれを直接手渡してくれます。

=LN(2) / LN(1.07)          ' -> 10.24   年利 7% で 2 倍になるまでの年数
=LOG(2, 1.07)              ' -> 10.24   同じ答え、底を明示した LOG
=LN(Target/Start) / LN(1 + rate)   ' 一般形

これは、POWER ガイドの CAGR の数式のちょうど逆です。あちらでは 期間が分かっていて率を解きましたが、こちらでは率が分かっていて期間を解きます。もう 1 つ触れて おく価値のある対数があります — 対数収益率、=LN(P1/P0) です。これは期間をまたいできれいに 足し合わせられる連続複利の収益率で、だからこそ定量ファイナンスは単純なパーセント変化より これを好みます。

判断のポイント

日々のスプレッドシート作業では、この一族を「警告ラベル付きの 2 つの道具」と捉えましょう。 2 つの道具とは、幾何平均(EXP(AVERAGE(LN(...))))と、期間を解く式(LN(target)/LN(rate)) です。「平均成長率」や「あと何期間」が出てくるたびにこれらに手を伸ばせば、残りはめったに 必要になりません。警告ラベルは既定の底です。自然対数のつもりでむき出しの LOG を決して 書かないこと — LN を使うか、底を明示すること。 それ以外(対数スケール、デシベル、 エントロピー)は正真正銘の科学であり、それをやっているなら、どの底が必要かはもう分かっている はずです。

ExcelMaster が役立つ場面

既定の底の落とし穴は、まさにあらゆる目視チェックを生き延びる類の静かなエラーです — 数値は まともに見えて、ただスケールだけが間違っているのです。ExcelMaster に「この年間収益率の 幾何平均を」と頼めば、結果を過大評価する素朴な AVERAGE ではなく、EXP(AVERAGE(LN(...))) (または GEOMEAN)を正しく書いてくれます。「年利 7% で 2 倍になるまで何年?」と聞けば、 最初から最後まで正しい底で LN(2)/LN(1.07) を出します。そして「この列の自然対数をとって」と 言えば、むき出しの LOG ではなく LN に手を伸ばし、放っておけば #NUM! を返すゼロや負数を 守ります。

よくある質問

Excel の EXP 関数は何をしますか?

=EXP(x) は定数 e(≈2.71828)を x 乗した値を返します。=EXP(1)e そのもの、 =EXP(0)1 になります。連続的な指数関数的成長をモデル化し、自然対数の厳密な逆関数なので、 =EXP(LN(x))x を返します。

Excel の LN と LOG の違いは何ですか?

=LN(x) は自然対数で、常に 底 e です。=LOG(x) は底を指定しないとき 底 10 を使い、 =LOG(x, base) なら任意の底を選べます。つまり LN とむき出しの LOG同じではありません — 自然対数には常に LOG ではなく LN を使いましょう。

LOG が予想と違う答えを返すのはなぜですか?

ほぼ必ず底が原因です。Excel では第 2 引数のない =LOG(x) は底 10 ですが、数学や多くの プログラミング言語では log は自然対数(底 e)を意味します。自然対数には =LN(x) を使うか、 底を明示的に指定しましょう。例:=LOG(x, 2)=LOG(x, EXP(1))

Excel で対数を使って幾何平均を計算するには?

=EXP(AVERAGE(LN(range))) を使います。range には成長率(+10% なら 1.10 のような値)が入って います。自然対数を平均して指数関数で戻すと幾何平均が得られます — これが複利の率を平均する 正しい方法です。Excel には専用の GEOMEAN 関数もあります。

Excel の LN や LOG で #NUM! が出るのはなぜですか?

対数は正の数に対してしか定義されていないため、=LN(0)=LN(-3)=LOG(-5) はすべて #NUM! を返します。対数変換の前に、範囲にゼロや負数がないか確認しましょう — たとえば =IF(x>0, LN(x), NA()) とすれば、計算を巻き込んで壊す代わりに、問題の行を浮かび上がらせ られます。

検証環境

検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-10。

関連ガイド: Excel POWER & SQRT · Excel ABS & SIGN · Excel ROUND · Excel SUMPRODUCT