Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

【VBA】Int関数・Fix関数

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

【VBA】Int関数

Int は指定した数値を超えない最大の整数を返します。数学のガウス記号 [] に相当するもので、正の入力値に対しては、そのまま小数点以下を取り除く処理になります。たとえば、Int(1.5) の戻り値は「1」です。負の引数に対しては、戻り値は受け取った引数を超えない最大整数を返します。たとえば、Int(-1.5) の戻り値は「-1.5」を超えない最大整数「-2」となります(負数の大小関係に注意です)。

【VBA】Fix関数

VBA の Fix は渡された数値の小数部分を取り除いた数値を返します。たとえば Fix(1.5) は、Int関数と同じく「1」を返しますが、Fix(-1.5) は小数部 0.5 を落として、「-1」が返ります。

FixとIntの使い分け

VBA の Fix 関数と Int 関数の機能を簡単にまとめると、Fix 関数は数値を

[正の整数] + [1未満の小数]

で指定した場合に [正の整数] を返します。また数値を

[負の整数] - [1未満の小数]

と指定したときには [負の整数] を返します。Int 関数は数値を

[正の整数] + [1未満の小数]

で指定した場合に [正の整数] を返します。また数値を

[負の整数] - [1未満の小数]

と指定したときには [負の整数] -1 を返します。

端数を Fix あるいは Int のどちらで処理するかを選択する Function プロシージャを作っておきました。戻り値は Long 型です。

'[VBA] 端数処理を選択して整数を返す関数

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 型にしてあります。

'[VBA] 受け取った数値の小数部を返す関数

Function IDROP(x As Double) As Double
   IDROP = x - Fix(x)
End Function

たとえばワークシート上で

=IDROP(3.14159265358979)

と入力すると「0.14159265358979」を返します。

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