VBA(Visual Basic for Applications)における組み込み関数 Int
は、数値の整数部分を取得するための関数です。小数点以下を切り捨てて、指定された数値より小さいまたは等しい最大の整数を返します。特に、正の数に対しては小数点以下を単純に無視するように動作し、負の数に対してはより小さい整数に切り下げるという特徴があります。
■ 1. Int関数の概要
Int
関数は、小数を含む数値から小数点以下を切り捨てて、整数部分だけを返すために使われます。よくある誤解として、”切り捨て” というと「0に近づける」と思われがちですが、Int
関数は「常に小さい方向」への切り捨てを行うため、負の数に対しては注意が必要です。
■ 2. 構文
Int(number)
引数:
number
: 任意の数値型の数値(Double
,Single
,Integer
,Long
,Currency
など)。整数または小数を指定できます。
戻り値:
- 引数に最も近い整数のうち、それ以下の最大の整数(floor関数のような動作)を返します。
- 結果は常に
Double
型です。
■ 3. 使用例
例1:正の小数の切り捨て
Dim x As Double
x = Int(10.75)
MsgBox x ' 結果は 10
例2:負の小数の切り捨て
Dim y As Double
y = Int(-10.75)
MsgBox y ' 結果は -11(-10ではないことに注意)
例3:整数の場合
MsgBox Int(25) ' 結果は 25(変化なし)
■ 4. Int関数の動作原理と数学的意味
Int
関数は、数学でいう「床関数(floor)」と同じ動作をします。つまり、ある数値に対してそれ以下の最大の整数を返します。これは「0方向に切り捨てる」Fix
関数とは異なります。
入力値 | Int の結果 | Fix の結果 |
---|---|---|
3.9 | 3 | 3 |
-3.9 | -4 | -3 |
したがって、特に負の値を扱う際には Int
と Fix
の違いを理解して使い分ける必要があります。
■ 5. Fix関数との比較
特徴 | Int | Fix |
---|---|---|
正の数 | 小数点以下切り捨て(例:3.9 → 3) | 同じ |
負の数 | より小さい整数に切り捨て(例:-3.9 → -4) | 0 に近づけるように切り捨て(例:-3.9 → -3) |
主な用途 | 常に小さい方向に切り捨てたい場合(丸め誤差防止など) | 数学的な0方向への切り捨てが必要なとき(符号付き処理など) |
■ 6. 応用例
● 日付から整数日数の計算
ExcelやVBAでは日付はシリアル値(整数部が日、少数部が時分秒)で管理されているため、日付のみを取り出す際に使われます。
Dim dt As Date
dt = Now ' 現在日時
MsgBox "日付のみ: " & Int(dt)
この場合、Int(dt)
によって時刻情報が切り捨てられ、日付部分だけが抽出されます。
● 通貨計算での単位変換
たとえば、端数を切り捨てて100円単位に変換したいときなど。
Dim 金額 As Double
金額 = 1234.56
MsgBox "100円単位(切り捨て): " & Int(金額 / 100) * 100
' 結果は 1200
● ループ処理や整数分割
Dim 合計時間 As Double
Dim 時間 As Integer
合計時間 = 7.75 ' 7時間45分
時間 = Int(合計時間)
MsgBox 時間 ' 結果は 7
■ 7. 注意点とよくある誤解
● 負の数に対する切り捨てに注意
初心者がよく間違えるのが、負の小数を Int
で処理したときの動作です。たとえば Int(-2.5)
の結果は -3
になります。これを -2
と誤認して処理するとロジックの不具合になります。
Dim a As Double
a = -2.5
MsgBox Int(a) ' 結果は -3
これを「0に近い方向」で切り捨てたい場合は Fix
関数を使うべきです。
■ 8. 使用場面まとめ
使用場面 | 使用目的 | 備考 |
---|---|---|
日付処理 | 時刻情報の除去 | Int(Now) で日付だけ抽出 |
数値分解 | 小数点以下の切り捨て | 負の数には注意 |
会計処理 | 金額の切り下げ | 小単位処理に有効 |
ループ処理 | 繰り返し数を整数で取得 | Int(範囲/値) など |
■ 9. 数学的観点での意義
Int
関数は数学的には「床関数(floor function)」として知られており、数値を「最も近いがそれ以下の整数」へ変換します。これは整数除算やステップ制御、座標丸め、アルゴリズムの簡素化など、さまざまな数理処理の基礎となる操作です。
■ 10. まとめ
VBAの Int
関数は、小数点以下を切り捨ててその数値以下の最大の整数を返す、非常に基本的ながら重要な関数です。特に、負の値に対しても正確に意図した方向に切り捨てる処理を実現したい場合に役立ちます。
Fix
関数との違いを理解し、状況に応じて適切な関数を選択することで、誤動作や論理バグを防ぐことができます。日付の時刻除去、会計処理、繰り返し制御、範囲計算などの多くの場面で使われるこの関数は、VBAを扱う上で習得必須のツールと言えるでしょう。