7-4.数値に関する関数

今回は、数値に関する関数をいくつか説明します。

数値の作成

Val関数:文字列中の数値を数値として取り出す

○構文
Val(string)

○処理
stringが文字列型の数値の場合、数値型として返します。
stringが数値+文字列の場合、先頭の数値部分のみ数値型として返します。
stringが数値以外で始まる場合、0が返します。

Sub Val関数()

    MsgBox Val("123")
    '>>> 123
    MsgBox Val("123円")
    '>>> 123
    MsgBox Val("あいう")
    '>>> 0
    
End Sub

小数点以下の切り捨て

Fix関数

○構文
Fix(number)

○処理
numberに指定した数値の小数部分を切り捨てて、整数部分を返します。

Int関数

○構文
Int(number)

○処理
numberに指定した数値の小数部分を切り捨てて、整数部分を返します。
負の数値を指定した場合、指定した数値以下の最初の整数を返します。

Sub 小数点以下を切り捨てる()

    MsgBox Fix(1.5)
    '>>> 1
    MsgBox Int(1.5)
    '>>> 1
    
    MsgBox Fix(-1.5)
    '>>> -1
    MsgBox Int(-1.5)
    '>>> -2
    
End Sub

小数点以下の四捨五入

Round関数

○構文
Round(number,[numdecimalplaces])

○処理
numberに指定した数値の小数点以下を四捨五入します。
四捨五入する小数点の桁数をnumdecimalplacesに指定します。

VBAのRound関数では、小数点0.5を四捨五入する場合、単純な切り上げではなく、最も近い偶数に丸められます。
VBAで厳密な四捨五入を行いたい場合は、ワークシート関数のRound関数を使用しましょう。

Sub 小数点以下を四捨五入する()

    MsgBox Round(1.5, 0)
    '>>> 2
    MsgBox Round(1.55, 1)
    '>>> 1.6
    
    MsgBox Round(2.5, 0)
    '>>> 2
    MsgBox WorksheetFunction.Round(2.5, 0)
    '>>> 3
    
End Sub

絶対値を取得

Abs関数:数値の絶対値を取得する

○構文
Abs(number)

○処理
numberを絶対値で返します。

Sub Abs関数()

    MsgBox Abs(-1)
    '>>> 1
    
End Sub

乱数の発生

Rnd関数:乱数を発生させる

○構文
Rnd(number)

○処理
0以上1未満の乱数を発生させます。

○引数
numberに乱数の発生の仕方を指定します。

乱数は、乱数系列というランダムな数値の並びの中から数値を取り出して返します。
乱数系列は、引数numberで指定したシード値によって管理されており、同じシード値の乱数系列は、同じ数値の並びとなっています。
反対に、乱数系列を変更したい場合は、シード値を変更する必要があります。

内容
0より小さい毎回同じ数値を返す
0直前に発生した乱数と同じ数値を返す
0より大きい / 省略するランダムに数値を返す

Randomize関数:乱数系列を初期化する

○構文
Randomize(number)

○処理
引数numberに指定した数値(シード値)に基づき、乱数系列を初期化します。
引数を省略した場合、PCのシステム時刻からシード値を自動で取得して初期化します。

Sub 乱数の発生()
    
    MsgBox Rnd(0)
    MsgBox Rnd(0)
    
    Randomize (0)
    
    MsgBox Rnd(0)
    
End Sub

コメント