スプレッドシートで「この値は○の何乗か?」を調べたいとき、どうしていますか?
対数計算は一見むずかしそうですが、LOG関数を使えば底を自由に指定して対数を求められます。
底を省略すれば常用対数(底10)になるので、手軽に使えるのもポイントです。
この記事では基本の書き方から実務での活用例まで紹介します。LN関数・LOG10関数との違いも比較表で整理しています。
LOG関数とは?
LOG関数(読み方: ログ関数)は、指定した底の対数を返す関数です。
名前は英語の「Logarithm(対数)」の略称からきています。
対数とは「底を何乗したら、その値になるか」を表す数です。たとえばLOG(100, 10)は「10を何乗したら100になるか」を計算します。答えは2です。
LOG関数にできることをまとめると、次のとおりです。
- 指定した底の対数を計算する
- 底を省略すると常用対数(底10)を返す
- データの桁数やスケールの比較に使える
- 情報量(ビット数)の計算に活用できる(底2)
NOTE
LOG関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。
LOG関数の書き方(構文と引数)
基本構文
=LOG(値, [底])
カッコの中に「対数を求めたい正の数」と「底」を指定します。底は省略できます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 対数を求めたい正の数値。セル参照や数式も指定できる |
| 底 | 任意 | 対数の底。省略すると10になる。1以外の正の数を指定する |
底を省略した場合は10(常用対数)として計算されます。底に1を指定すると#NUM!エラーになります。
LOG関数の基本的な使い方
底10の対数(常用対数)
=LOG(100, 10)
結果は「2」です。10の2乗が100なので、LOG(100, 10) = 2になります。
底を省略しても同じ結果です。
=LOG(100)
こちらも結果は「2」です。底を省略するとデフォルトで10が使われます。
底2の対数
=LOG(8, 2)
結果は「3」です。2の3乗が8なので、LOG(8, 2) = 3になります。
=LOG(16, 2)
結果は「4」です。2の4乗が16です。
いろいろな底と値の組み合わせ
| 数式 | 結果 | 意味 |
|---|---|---|
| =LOG(1000, 10) | 3 | 10の3乗 = 1000 |
| =LOG(8, 2) | 3 | 2の3乗 = 8 |
| =LOG(81, 3) | 4 | 3の4乗 = 81 |
| =LOG(1, 10) | 0 | 10の0乗 = 1 |
| =LOG(10) | 1 | 10の1乗 = 10(底省略) |
どの底でも「底の0乗 = 1」なので、LOG(1, 底) = 0です。
セル参照を使う
実務ではセル参照を使うケースがほとんどです。A2セルに値が入っているとします。
=LOG(A2, 10)
セル参照にしておけば、値を変更するだけで結果が自動的に更新されます。
実務でのLOG関数活用例
データの桁数を求める
「この数値は何桁か?」を調べるパターンです。
A2セルに数値が入っているとします。
=INT(LOG(A2, 10)) + 1
たとえばA2に「12345」が入っているとします。
=INT(LOG(12345, 10)) + 1
結果は「5」です。LOG(12345, 10) = 4.0915…なので、INT関数で4に切り捨て、1を足して5桁になります。
TIP
この方法はLEN関数でも代用できます。ただしLEN関数は文字列の長さを数えるので、小数点やマイナス記号も含まれます。純粋な桁数ならLOG関数のほうが正確です。
情報量(ビット数)を計算する
データ分析で「何ビットの情報量か」を求めるパターンです。
パターン数がA2に入っているとします。
=LOG(A2, 2)
たとえば8パターンの選択肢があるとします。
=LOG(8, 2)
結果は「3」です。8パターンを表現するには3ビット必要です。
対数スケールでデータを比較する
桁数がバラバラなデータを比較するとき、LOG関数で対数スケールに変換します。
売上データがA2に入っているとします。
=LOG(A2, 10)
| 元の値 | =LOG(元の値, 10) |
|---|---|
| 100 | 2 |
| 10,000 | 4 |
| 1,000,000 | 6 |
100倍ずつ差があったデータが、対数変換すると2ずつ増える均等な間隔になります。グラフの軸を対数スケールにするときの考え方と同じです。
LN関数・LOG10関数との違い・使い分け
対数を返す関数は3つあります。違いは「底」です。
| 関数 | 動作 | 底 | 引数 |
|---|---|---|---|
| LOG | 指定した底の対数を返す | 自由に指定(省略時10) | 1〜2つ |
| LN | 自然対数を返す | e(約2.718) | 1つ |
| LOG10 | 常用対数を返す | 10 | 1つ |
LOG関数とLN関数の使い分け
LOG関数は底を自由に指定できます。LN関数は底がe(ネイピア数)に固定されています。
=LOG(100, EXP(1)) → 4.60517...(底eの対数)
=LN(100) → 4.60517...(同じ結果)
底をeにしたいときは、LOG関数よりもLN関数を使いましょう。数式がシンプルになります。
| 用途 | おすすめ関数 |
|---|---|
| 連続成長率・統計分析 | LN関数(底e固定) |
| 底を自由に指定したい | LOG関数 |
| 常用対数(底10) | LOG10関数 or LOG関数(底省略) |
LOG関数とLOG10関数の使い分け
LOG関数で底を省略すると、LOG10関数と同じ結果になります。
=LOG(1000) → 3(底10の対数)
=LOG10(1000) → 3(同じ結果)
どちらを使っても構いませんが、「常用対数を使う」と明示したいときはLOG10関数を使うと意図が伝わりやすくなります。
底の選び方ガイド
| 底 | 使う場面 | 使う関数 |
|---|---|---|
| 10 | 桁数の計算、pH、デシベル | LOG10関数 or LOG関数 |
| e(約2.718) | 連続成長率、統計分析、微積分 | LN関数 |
| 2 | 情報量(ビット数)、コンピュータ関連 | LOG関数 |
| その他 | 特定の底が必要な計算 | LOG関数 |
よくあるエラーと対処法
LOG関数は引数の指定を間違えるとエラーが出ます。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | 値に0や負の数を指定した | 正の数のみ指定する |
| #NUM! | 底に0・負の数・1を指定した | 底は1以外の正の数にする |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値かどうか確認する |
| #ERROR! | 構文ミス(カッコ忘れ等) | 数式の入力内容を見直す |
値が0や負の数のとき
LOG関数に0や負の数を渡すと#NUM!エラーです。
=LOG(0, 10) → #NUM!
=LOG(-5, 10) → #NUM!
対数は正の数に対してのみ定義されるため、0以下の値は計算できません。
セル参照先にゼロが入る可能性があるときは、IF関数で事前にチェックしましょう。
=IF(A1>0, LOG(A1, 10), "正の数を入力してください")
底に1を指定したとき
底に1を指定すると#NUM!エラーです。
=LOG(100, 1) → #NUM!
1を何乗しても1のままなので、底1の対数は定義できません。
文字列を渡したとき
LOG関数に文字列を渡すと#VALUE!エラーです。
=LOG("abc", 10)
セル参照先が数値かどうか不安なときは、ISNUMBER関数で確認できます。
=IF(ISNUMBER(A1), LOG(A1, 10), "数値を入力してください")
Excelとの違い
LOG関数はExcelとGoogleスプレッドシートで完全に同じ動作です。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =LOG(数値, [底]) | =LOG(値, [底]) |
| 動作 | 指定した底の対数を返す | 指定した底の対数を返す |
| 底の省略時 | 10(常用対数) | 10(常用対数) |
| 精度 | 15桁 | 15桁 |
| 0以下の引数 | #NUM! | #NUM! |
引数名の表記が若干異なるだけで、機能は完全に同じです。ファイルを共有しても計算結果はずれません。
まとめ
LOG関数は、指定した底の対数を返す関数です。
ポイントを整理します。
- 構文は
=LOG(値, [底])の1〜2引数。底を省略すると10(常用対数) - LOG(100, 10) = 2、LOG(8, 2) = 3のように「底を何乗したらその値になるか」を返す
- データの桁数を求めるには
=INT(LOG(値, 10)) + 1 - LN関数は底がe固定、LOG10関数は底が10固定
- 底2の対数は情報量(ビット数)の計算に便利
- 値は正の数のみ。底は1以外の正の数を指定する
まずは =LOG(100, 10) で100の常用対数を表示するところから試してみてください。
