Excel VBAの「Log 関数」について解説します。
Log 関数とは
Excel VBA の Log 関数は、数値の自然対数を表すDouble値を返します。
Log 関数の構文や実際の使い方について具体的に解説していきたいと思います。
対数とは、一言でいえば「ある数(底)を何乗したらその数になるか?」を探る計算です。例えば、100という数字は、10(底)を「2回」掛けると100になります。これは常用対数 2 ということです。
自然対数と常用対数の比較表は次のとおりです。
| 種類 | 底 (Base) | VBAでの書き方 | 主な用途 |
| 自然対数 | e (約2.718282) | Log(x) | 統計、科学計算、金融計算 |
| 常用対数 | 10 | Log(x) / Log(10) | 桁数の算出、デシベル計算 |
VBAで Log(10) と書くと、答えは 1 にはなりません(約 2.302 になります)。なぜなら、VBAのLogは自然対数(定数 e(ネイピア数:約2.718282)を底とする対数)で動いているからです。10ベースで考えたいときは、少し工夫が必要です。
Log 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
Log(number)
引数
| 指定項目 | 説明 |
|---|---|
| number | 【必須】0 より大きい Double型の数値(式) |
※ 0 以下の値を指定するとエラー(実行時エラー ‘5’)になります。
戻り値
指定した数値(引数)の「自然対数」を返します。
戻り値のデータ型は Double型(倍精度浮動小数点型) です。
戻り値を「常用対数」とするには
数学で習う「常用対数」では、Log(100) の戻り値は 2 です。これは 底10 を2回掛ける (10の2乗) ということです。
対して、VBAの Log 関数の底は e ですから、引数 x に対して次のように対応します。
解説(使用例)
ここからは、サンプルを使って使用例や注意点などについて解説します。
Log 関数の基本的な使い方
基本的な Log 計算例
InputBox で入力した数値の自然対数を求めます。
'■Log関数サンプル1(与えられた数値の自然対数を求める)
Sub Log_Sample_01()
Dim num As Double
num = InputBox("数値を入力して下さい")
MsgBox "ln(" & num & ") = " & Log(num)
End SubInputBox に 100 を入力しました。

実行結果がこちらです。

100 の自然対数 (ln) が表示されました。
常用対数 (log10) を求める例
日常生活や科学的な計算などで、十進法(10で繰り上がる)に基づいて値を直感的に捉えやすくするために使われるのが常用対数です。次のコードは、Log 関数で常用対数の値を得る簡単なサンプルです。
'■Log関数サンプル2(与えられた数値の常用対数を求める)
Sub Log_Sample_02()
Dim num As Double
num = InputBox("数値を入力して下さい")
MsgBox "Log10(" & num & ") = " & _
Log(num) / Log(10)
End Subサンプル1を改変しただけのコードですが、InputBox に入力された数値の常用対数を表示します

InputBox には 1000 を入力しました。

計算結果として 1000 に対する常用対数 3 が表示されました。
3 というのは 1000 は 10 の 3 乗ということを表しています。
数値の桁数を求める例
Log 関数を使った常用関数を求めるで数値の桁数を求めることができます。
'■Log関数サンプル3(数値の桁数を求める)
Sub Log_Sample_03()
Dim num As Double
Dim digit As Long
num = InputBox("数値を入力して下さい")
digit = Int(Log(num) / Log(10)) + 1
MsgBox num & " の桁数は " & digit & " です"
End Sub実行時に入力した InputBox の数値は 123456789 です。

実行結果の桁数は次のとおり「9」でした。

桁数を求めるには、Log関数サンプル2の数値 1000 に対する常用対数の結果 3 を見ていただければわかると思います。常用対数に 1 プラスした値が数値(引数)の桁数を表しています。
コードは Int 関数で常用対数の小数以下を切り捨てたうえで 1 をプラスして桁数を求めています。
まとめ
VBA の Log 関数は、自然対数 (ln) を求めるための関数です。
常用対数を求めたい場合は、自然対数を Log(10) で割ることで求めることができます。
| 種類 | 底 (Base) | VBAでの書き方 | 主な用途 |
| 自然対数 | e (約2.718282) | Log(x) | 統計、科学計算、金融計算 |
| 常用対数 | 10 | Log(x) / Log(10) | 桁数の算出、デシベル計算 |
- 0 以下の値を指定するとエラー(実行時エラー ‘5’)になります
- 桁数計算や倍率計算などの実務で活用されています
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;
VBAの関数一覧はこちらからご参照ください。

VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!

