はじめに
Excel VBAには、たくさんの関数があります。VBAを組むために、すべて覚えなければいけないということはありません。必要最小限の関数のみ、「有る」ということを覚えておいて、必要になったときヘルプやインターネットで調べると良いと思います。
良く使用される関数を数値関数、文字列関数、日付と時刻の関数、その他の関数に分けて説明したいと思います。今回は数値関数の、整数化(Int/Fix)/ 乱数発生(Rnd)/ 平方根(Sqr)/ 絶対値(Abs) / 進数計算について説明したいと思います。最後に関数の調べ方についても少し触れてみようと思っています。
ゼロからはじめるVBA - 基本編
ゼロからはじめるVBA - VBA事始め編
ゼロからはじめるVBA - セル操作編
ゼロからはじめるVBA - 条件による分岐編
ゼロからはじめるVBA - 繰り返し処理編
ゼロからはじめるVBA - ユーザーフォーム編
ゼロからはじめるVBA - マクロの記録を使った例題編
整数化(Int/Fix)
整数化ということは、小数点以下をなくすということですが、小数点の処理をどうするかということで、Int関数とFix関数があります。
整数化(Int)
Int関数は小数点以下を切り捨てます。変数aが2.56であったとき、Int(a)は2になります。変数aが2.999の時もInt(a)は2になります。マイナス2.56(-2.56)の時はどうでしょうか、以下に例題を書いています。実際に入力して確認してください。
以下説明するリストはsample.lzhの中に数値関数例題.xlsmとして収録しています。サンプルとしてご活用ください。
[リスト1]rei_Int(数値関数例題.xlsm)
Sub rei_Int()
a = 2.56 '(1)
MsgBox ("a=" & a & " Int(a)=" & Int(a)) '(2)
a = -2.56
MsgBox ("a=" & a & " Int(a)=" & Int(a))
End Sub
(1)で変数aに値をセットし、(2)で表示しています。以下が実行結果です。
図1a 2.56の時 |
図1b -2.56の時 |
マイナスの時、-2.56は-3になりました。Int関数は指定された数値より小さい値の整数値を返します。
整数化(Fix)
Fix関数も小数点以下を切り捨てます。Int関数との違いはマイナス数値の答えにでてきます。例題を作って実行してみましょう。
[リスト2]rei_Fix(数値関数例題.xlsm)
Sub rei_Fix()
a = 2.56
MsgBox ("a=" & a & " Fix(a)=" & Fix(a))
a = -2.56
MsgBox ("a=" & a & " Fix(a)=" & Fix(a))
End Sub
リスト1のIntの場所をFixに変えてみました。以下が実行結果です。
図2a 2.56の時 |
図2b -2.56の時 |
マイナスの時、-2.56は-2になりました。Fix関数は指定された数値より0に近い整数値を返します。
Int関数とFix関数を比較し、マイナス数値がどうなるか、見比べてください。変数aに-2.56が入っているとして、Int(a)は、-3、Fix(a)は、-2が表示されています。Int関数は指定された数値より小さい値の整数値を返すのに対して、Fix関数は指定された数値より、0に近い整数値を返します。言葉ではピンとこないので、以下にイメージ図を書いてみました。数値を座標上にあらわして考えるとわかりやすいと思います。
まずマイナス数値の処理をみてみましょう。-2.56を考えてみます。
図3a マイナス数値の整数化.1 |
図3b マイナス数値の整数化.2 |
次にプラス数値の処理をみてみましょう。2.56を考えます
図4a プラス数値の整数化.1 |
図4b プラス数値の整数化.2 |
違いはマイナスの値で出てきます。プラスの値の場合はどちらも同じ値になります。