VBA Log 関数 数値の自然対数(ln)を表す値を返します

VBA Log 関数 数値の自然対数(ln)を表す値を返します

Excel VBAの「Log 関数」について解説します。

目次

Log 関数とは

Excel VBA の Log 関数は、数値の自然対数を表すDouble値を返します。

Log 関数の構文や実際の使い方について具体的に解説していきたいと思います。

対数(Log)とは何か?

対数とは、一言でいえばある数(底)を何乗したらその数になるか?」を探る計算です。例えば、100という数字は、10(底)を「2回」掛けると100になります。これは常用対数 2 ということです。
自然対数と常用対数の比較表は次のとおりです。

種類底 (Base)VBAでの書き方主な用途
自然対数e (約2.718282)Log(x)統計、科学計算、金融計算
常用対数10Log(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 に対して次のように対応します。

戻り値を常用対数(底10)として受け取りたい場合、Log(x) / Log(10) という計算式を通します

解説(使用例)

ここからは、サンプルを使って使用例や注意点などについて解説します。

Log 関数の基本的な使い方

基本的な Log 計算例

InputBox で入力した数値の自然対数を求めます。

'■Log関数サンプル1(与えられた数値の自然対数を求める)
Sub Log_Sample_01()
  Dim num As Double
  
  num = InputBox("数値を入力して下さい")
    
  MsgBox "ln(" & num & ") = " & Log(num)

End Sub

InputBox に 100 を入力しました。

Log関数サンプル1のInputBox画像

実行結果がこちらです。

Log関数サンプル1実行結果のMsgBox

100 の自然対数 (ln) が表示されました。

ln(エルエヌ)は、数学において底(てい)がネイピア数 e (約2.718282) である「自然対数(natural logarithm)」を指す記号です。

常用対数 (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 に入力された数値の常用対数を表示します

Log関数サンプル2実行時の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)統計、科学計算、金融計算
常用対数10Log(x) / Log(10)桁数の算出、デシベル計算
  • 0 以下の値を指定するとエラー(実行時エラー ‘5’)になります
  • 桁数計算や倍率計算などの実務で活用されています

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次