指定した引数に対して、その整数部を返す VBA 関数が Int と Fix です。互いによく似た機能を持つ関数ですが、負数を指定した場合にその戻り値が異なります。
[VBA] Int関数
Int は、指定した数値を超えない最大の整数を返します。数学のガウス記号 [ ] に相当するもので、正の入力値に対しては、そのまま小数点以下を取り除く処理になります。たとえば
Int(1.5)
とすれば、その戻り値は「 1 」です。負の引数に対しては、たとえば
Int(-1.5)
としたとき、戻り値は「-1.5 」を超えない最大の整数「-2 」となります(負数の大小関係に注意です)。
[VBA] Fix関数
Fix は、指定した数値の小数部分を取り除いた数値を返します。たとえば
Fix(1.5)
としたときは、Int関数と同じく「 1 」という値を戻しますが、
Fix(-1.5)
としたときは、小数部分の 0.5 を落として「-1 」を返してきます。
[VBA] Int と Fix を使い分ける
Int と Fix の機能を簡単にまとめると、
Fix 関数は数値を
[正の整数] + [1 未満の小数]
で指定した場合に [正の整数] を返します。また数値を
[負の整数] - [1 未満の小数]
と指定したときには [負の整数] を返します。
Int 関数は数値を
[正の整数] + [1 未満の小数]
で指定した場合に [正の整数] を返します。また数値を
[負の整数] - [1 未満の小数]
と指定したときには [負の整数] - 1 を返します。
端数を Fix あるいは Int のどちらで処理するかを選択する Function プロシージャを作っておきました。戻り値は Long 型です。
Function DROP(n As Double, Optional i As Integer = 0) As Long If i = 1 Then d = Int(n) Else d = Fix(n) End If DROP = d End Function
DROP 関数は 2 つめの引数に 1 を指定したときだけ Int で処理します。それ以外の数値を指定するか、あるいは 2 つめの引数を省略したときには Fix で処理します。たとえば
=DROP(-3.3)
と入力すると「-3 」を返しますが、
=DROP(-3.3,1)
と入力すると「-4 」を返します。
今度は逆に整数部分を切って(ドロップして)、小数部分のみを残す関数です。戻り値は Double 型にしてあります。
Function IDROP(x As Double) As Double IDROP = x - Fix(x) End Function
たとえばワークシート上で
=IDROP(3.14159265358979)
と入力すると「 0.14159265358979 」を返します。
エクセルや数学に関するコメントをお寄せください