[VBA] Int関数・Fix関数

 指定した引数に対して、その整数部を返す VBA 関数が IntFix です。互いによく似た機能を持つ関数ですが、負数を指定した場合にその戻り値が異なります。

[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 」を返します。

エクセルや数学に関するコメントをお寄せください