「対数って何だっけ…」と手が止まった経験はありませんか。数学の記憶があいまいだと、ExcelのLOG関数も敬遠しがちです。でも安心してください。LOG関数は仕組みさえつかめば、複利計算や桁数カウントなど実務でも役立つ便利な関数です。この記事では、Microsoft 365 の Excel を例に、LOG関数の基本から LOG10・LN との違い、エラー対処法まで丁寧に解説します。
ExcelのLOG関数とは?
LOG関数は「対数(たいすう)」を求める関数です。対数とは、ある数を何乗したら目的の数になるかを表す値のことです。
たとえば「2を何乗したら8になるか」を考えてみましょう。2×2×2=8なので、答えは3です。これを数式で書くと次のようになります。
2^3 = 8 ⟺ log₂(8) = 3
左の式は「2の3乗は8」、右の式は「底2の対数で8は3」と読みます。ここで「底(てい)」とは、何乗するかの基準となる数のことです。
つまりLOG関数は「底を何乗したら指定した数値になるか」を返してくれる関数です。Excelでは =LOG(8,2) と入力すれば、結果は「3」になります。
LOG関数は Microsoft 365・Excel 2021・Excel for Web を含む現行のすべてのバージョンで利用できます。古いバージョン(Excel 2016・2019)でも同じ書式で動作するため、互換性を気にせず使えますよ。
LOG・LOG10・LNの使い分け早見表
Excelには対数を求める関数が3つあります。違いは「底が何か」だけです。
| 関数 | 底 | 書式例 | 結果 | 用途 |
|---|---|---|---|---|
| LOG | 任意に指定可能(省略時は10) | =LOG(8,2) | 3 | 底を自由に選びたいとき |
| LOG10 | 10(固定) | =LOG10(100) | 2 | 常用対数(桁数計算など) |
| LN | e≒2.718(固定) | =LN(10) | 約2.303 | 自然対数(指数関数の逆算など) |
底が10のときはLOG10関数が使えます。底がe(ネイピア数≒2.718)のときはLN関数を使うと、引数が1つで簡潔に書けます。底を自由に指定したい場合は、LOG関数を使いましょう。
底を指定しないシンプルな対数なら LOG10 や LN のほうが読みやすく、底を変えてシミュレーションしたいなら LOG が最適です。指数の逆算をしたい場合はEXP関数、累乗計算はPOWER関数を組み合わせるとさらに応用が広がります。
LOG関数の書式と引数
LOG関数の構文は次のとおりです。
=LOG(数値, [底])
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 数値 | 必須 | 対数を求めたい正の実数 |
| 底 | 省略可 | 対数の底。省略すると10 |
底を省略すると常用対数になる
第2引数の「底」を省略した場合、底は自動的に10になります。つまり =LOG(100) は =LOG10(100) と同じ結果を返します。
常用対数(底が10の対数)を使う場面では、底の指定を省略するだけでOKです。ただし、意図を明確にしたい場合は =LOG10(100) と書くほうが読み手に伝わりやすいですよ。
底に指定できる値・できない値
底にはいくつかの制約があります。以下の条件を満たす数値だけが指定できます。
| 条件 | 指定可否 | 理由 |
|---|---|---|
| 正の数(0.5, 2, 10など) | 指定可 | 通常の対数計算が可能 |
| 1 | 指定不可 | 1を何乗しても1のため、対数が定義できない |
| 0以下(0, -2など) | 指定不可 | 対数の底は正の数に限られる |
底に1や0以下の値を指定すると #NUM! エラーになります。セルの参照先が意図しない値になっていないか確認してみてください。
LOG関数の基本的な使い方
ここでは具体的な数式と結果を見ていきましょう。
底を指定して対数を求める
底を明示的に指定するパターンです。
| 数式 | 結果 | 意味 |
|---|---|---|
| =LOG(8,2) | 3 | 2を3乗すると8 |
| =LOG(81,3) | 4 | 3を4乗すると81 |
| =LOG(10000,10) | 4 | 10を4乗すると10000 |
| =LOG(0.01,10) | -2 | 10の-2乗は0.01 |
このように「底を何乗すれば数値になるか」を返してくれます。検算したいときは、底を結果で累乗してみましょう。たとえば =2^3 は8になるので、=LOG(8,2) の結果「3」が正しいとわかります。累乗は ^ 演算子の代わりにPOWER関数(例 =POWER(2,3))でも書けます。
底を省略して常用対数を求める
底を省略すると、底は10として計算されます。
| 数式 | 結果 | 意味 |
|---|---|---|
| =LOG(100) | 2 | 10を2乗すると100 |
| =LOG(1000) | 3 | 10を3乗すると1000 |
| =LOG(50) | 約1.699 | 10の約1.699乗で50 |
10のきれいな累乗でない数値を指定すると、結果は小数になります。これは正常な動作なので心配いりません。
小数を四捨五入してきれいな桁にする
LOG関数の結果は小数になることが多いので、表示を整えたい場合はROUND関数と組み合わせるとスッキリします。
=ROUND(LOG(50), 3) → 1.699
=ROUND(LOG(2,1.05), 1) → 14.2
小数第2位までで切り上げたい場合はROUNDUP関数、切り捨てならROUNDDOWN関数を使いましょう。
よくあるエラーと対処法
LOG関数で発生しやすいエラーは主に2種類です。原因と対処法をそれぞれ確認しましょう。
#NUM!エラー
#NUM! エラーは、数学的に対数が計算できない値を指定したときに発生します。
| 原因 | 数式例 | 対処法 |
|---|---|---|
| 数値が0以下 | =LOG(-5,2) | 数値に正の数を指定する |
| 数値が0 | =LOG(0,10) | 0の対数は定義されない |
| 底が0以下 | =LOG(8,-2) | 底に正の数(1以外)を指定する |
| 底が1 | =LOG(8,1) | 底を1以外に変更する |
特に多いのは、セル参照先が空欄や0になっているケースです。データが未入力のセルを参照していないか確認しましょう。
#VALUE!エラー
#VALUE! エラーは、引数に数値以外の文字列を指定したときに発生します。
=LOG("abc",2) → #VALUE!エラー
セル参照を使っている場合、参照先に全角数字や単位付きの文字列(「100円」など)が入っていないか確認してください。VALUE関数で数値に変換するか、元データを修正すると解決します。
IFERRORでエラーを回避する
入力データにエラーの原因が含まれる可能性がある場合は、IFERROR関数で囲むと安全です。
=IFERROR(LOG(A1,2), "計算不可")
この数式では、LOG関数がエラーを返したときに「計算不可」と表示します。空文字 "" を指定すれば、エラー時にセルを空欄にすることもできます。データの一括処理などで活用してみてください。
実務での活用例
LOG関数は理論的な関数に見えますが、実務でも活躍する場面があります。
複利で元本が2倍になる年数を求める
「年利5%の複利で運用すると、元本が2倍になるのは何年後か」を計算してみましょう。
複利の計算式は「元本 × (1+利率)^年数 = 目標額」です。元本を1、目標額を2とすると、次の式になります。
(1.05)^年数 = 2
これを対数で解くと「年数 = log₁.₀₅(2)」です。Excelでは次のように書きます。
=LOG(2,1.05)
結果は約14.21です。つまり年利5%の複利なら、約14.2年で元本が2倍になるとわかります。
利率をセルに入れておけば、さまざまな条件でシミュレーションできます。たとえばA1に利率を入力して =LOG(2,1+A1) とすれば、利率を変えるだけで結果が自動更新されますよ。
| 年利(A1) | 数式 | 元本が2倍になる年数 |
|---|---|---|
| 3% | =LOG(2,1+A1) | 約23.4年 |
| 5% | =LOG(2,1+A1) | 約14.2年 |
| 7% | =LOG(2,1+A1) | 約10.2年 |
| 10% | =LOG(2,1+A1) | 約7.3年 |
「72の法則」(72÷年利=倍になる年数)でも近い値が得られますが、LOG関数を使えば正確な値が一発で出せます。
データの桁数をLOG関数で数える
正の整数の桁数は、常用対数を使って求められます。考え方はシンプルです。
- 1桁の数(1〜9):LOG10の値は0以上1未満
- 2桁の数(10〜99):LOG10の値は1以上2未満
- 3桁の数(100〜999):LOG10の値は2以上3未満
つまり「常用対数の整数部分+1」が桁数になります。数式にすると次のとおりです。
=INT(LOG(A1,10))+1
| A1の値 | LOG(A1,10) | INT+1 | 桁数 |
|---|---|---|---|
| 5 | 約0.699 | 1 | 1桁 |
| 100 | 2 | 3 | 3桁 |
| 99999 | 約4.999 | 5 | 5桁 |
LEN関数でも桁数は数えられますが、LEN関数は文字列として数えます。そのため数値の書式に影響されることがあります。LOG関数を使う方法なら、純粋に数値の大きさから桁数を判定できますよ。
商品数から必要な階層数を見積もる
「1段に10種類並べられる棚で、1000種類の商品を分類するには何段必要か?」のような階層設計でもLOG関数が活躍します。
=CEILING(LOG(1000,10), 1)
この場合、LOG(1000,10)=3 なので3段必要とわかります。商品数を可変にしたい場合はA1に商品数を入れて =CEILING(LOG(A1,10),1) とすればOKです。情報量計算(ビット数の見積もり)にも応用できます。=LOG(候補数,2) でビット数が求められますよ。
よくある質問
LOG関数とLOG10関数はどちらを使うべきですか?
底が10の常用対数を求めるなら、どちらを使っても結果は同じです。=LOG(100) と =LOG10(100) はどちらも2を返します。ただし「底が10であることを明示したい場合」はLOG10関数のほうが意図が伝わりやすいです。一方、底を自由に変えたい場合はLOG関数のみ対応できます。用途に応じて使い分けましょう。
LOG関数に0や負の数を入力したらどうなりますか?
#NUM! エラーになります。対数の定義上、0以下の数値には対数が存在しないため計算できません。セル参照でデータを渡す場合は、空白や0が入り込んでいないかを確認してください。エラーを回避したい場合は =IFERROR(LOG(A1,2), "") のようにIFERROR関数でラップすると安全です。
底をネイピア数e(自然対数)にしたいときはどうすればいいですか?
LN関数を使うのが最もシンプルです。=LOG(数値, EXP(1)) でも同じ結果になりますが、LN関数のほうが意図が明確で読みやすいです。自然対数の逆算(eの累乗を求める)にはEXP関数を使います。
LOG関数の結果が小数になるのはおかしいですか?
正常な動作です。たとえば =LOG(50) の結果は約1.699になります。これは「10の約1.699乗が50」を意味しており、計算として正しい値です。きれいな整数になるのは、底の正確なべき乗(10→100→1000など)を数値に指定したときだけです。
LOG関数は古いExcel(2016や2019)でも使えますか?
はい、LOG関数はExcelの初期バージョンから搭載されている標準関数なので、Microsoft 365・Excel 2021・Excel 2019・Excel 2016・Excel for Web のいずれでも同じ書式で使えます。書式や挙動はバージョンによる差がないため、互換性を気にせず利用できます。古いExcelファイルを開いて編集する場合でも問題ありません。
LOG関数とPOWER関数はどう違いますか?
POWER関数は「底^指数」の累乗(指数計算)を求める関数で、LOG関数とはちょうど逆の関係です。たとえば =POWER(2,3) は8(2の3乗)を返し、=LOG(8,2) は3(2を何乗で8になるか)を返します。複利計算で「○年後の元本」を求めたいときはPOWER関数、「目標額になる年数」を求めたいときはLOG関数を使うと使い分けやすいですよ。
LOG関数まとめ
LOG関数のポイントを整理します。
- LOG関数は「底を何乗すれば指定した数値になるか」を返す対数関数
- 構文は
=LOG(数値, [底])。底を省略すると10(常用対数) - 底が10ならLOG10関数、底がeならLN関数でも同じ計算ができる
- 数値は正の数のみ、底は正の数かつ1以外を指定する
#NUM!エラーは数値や底の範囲外指定、#VALUE!エラーは文字列指定が原因- 複利計算や桁数カウント、階層設計など、実務にも応用できる
対数の逆、つまり「eの累乗」を求めたい場合はEXP関数、一般の累乗計算はPOWER関数を確認してみてください。そのほかのExcel関数についてはExcel関数一覧からお探しいただけます。