VBA(Visual Basic for Applications)の組み込み関数 Fix
は、数値の整数部分を取得するための数学関数です。Fix
関数は小数点以下を切り捨てて、数値の符号に関係なく「ゼロに近い方向」の整数を返します。これは、負の数に対しても整数部分だけを取り出し、小数点以下を切り捨てるという特性を持ちます。
■ 1. Fix関数の概要
Fix
関数は、与えられた数値に対して小数点以下を切り捨て、整数部分のみを取得するために使用されます。符号を維持したまま小数部分を取り除くので、正の数は単純に小数点以下を削除し、負の数でも「0方向」に切り捨てた整数を返します。
たとえば:
Fix(4.7)
→4
Fix(-4.7)
→-4
これは、同じく小数を切り捨てる Int
関数とは挙動が異なります。
■ 2. 構文
Fix(number)
パラメータ:
number
:任意の数値。整数、実数、負数など。数値型(Double, Single, Integer, Long など)で指定します。
戻り値:
number
の小数点以下を切り捨てた整数(Double型)を返します。
■ 3. 基本的な使用例
● 正の数の場合
Dim result As Double
result = Fix(12.98)
MsgBox result ' 結果: 12
● 負の数の場合
MsgBox Fix(-8.76) ' 結果: -8
● 整数の場合
MsgBox Fix(100) ' 結果: 100(変化なし)
■ 4. Int関数との違い
VBAには、似たように小数点以下を処理する Int
関数がありますが、Fix
関数と Int
関数は負の数に対して異なる動作をします。
数値 | Fix の結果 | Int の結果 | 違い |
---|---|---|---|
4.5 | 4 | 4 | 同じ |
-4.5 | -4 | -5 | 異なる |
Fix
は 0 に近い方向に切り捨て、Int
は小さい方向(負の無限大側)に切り下げます。
これは重要な違いで、会計処理、日付処理、繰り返し制御などで意図した結果を得るために、両者を正しく使い分ける必要があります。
■ 5. 実用的な使用例
● 時刻を除いた日付の取得
Dim dt As Date
dt = Now ' 例: 2025/06/15 14:20:00
MsgBox Fix(dt) ' 結果: 2025/06/15
Fix
関数はシリアル値の整数部分(日付)だけを返すので、日付のみに注目した処理で役立ちます。
● 金額処理で100円単位に丸める
Dim amount As Double
amount = 1389.5
MsgBox Fix(amount / 100) * 100 ' 結果: 1300
このように、指定単位で切り捨てを行いたいときにも便利です。
● 絶対値に変換せずに整数処理をしたい場合
Dim score As Double
score = -89.7
MsgBox Fix(score) ' 結果: -89
■ 6. 数学的背景と処理の考え方
数学的に Fix
関数は 「0に向かって切り捨て」という動作を行います。これはいわゆる「truncation(トランケーション)」と呼ばれ、数値の整数部分をそのまま取り出す操作です。
この処理は、数値を符号付きで扱う場面、つまり正負を維持したまま丸め処理をしたいときに特に有効です。
■ 7. データ型と注意点
Fix
関数は結果を常に Double型 で返します。そのため、整数型の変数に代入するときには、データ型変換が必要な場合があります。
Dim result As Integer
result = Fix(12.8) ' OK(暗黙的に変換される)
ただし、大きな値や誤差が含まれる場合には、明示的な型変換(CLng
, CInt
など)を使う方が安全です。
■ 8. Fix関数を使うシチュエーション
シチュエーション | 使用目的 |
---|---|
日付・時刻の分離 | 日付部分のみ抽出 |
小数処理 | 小数点以下の除去 |
金額処理 | 指定単位での切り捨て |
負の数の処理 | 正負符号を保った整数取得 |
繰り返し処理 | 小数を整数ループに変換 |
■ 9. Fix関数を使うべきとき
● Int より Fix を使うべき場合
- 負の数でも「0方向」に切り捨てたいとき
- 単純に整数部分だけが欲しいとき
- 会計・財務などで正負符号が重要なとき
' Fixを使った場合
MsgBox Fix(-9.7) ' -9
' Intを使った場合
MsgBox Int(-9.7) ' -10 ←意図と異なる可能性あり
■ 10. まとめ
VBAの Fix
関数は、小数点以下をゼロに向かって切り捨てる機能を持つ、非常に便利な関数です。符号を保ったまま整数部分だけを取り出すことができるため、会計処理や日付処理、繰り返し処理など、さまざまな場面で役に立ちます。
特に、似た機能を持つ Int
関数との違いを正しく理解することが、意図した通りのプログラムを組む上で極めて重要です。
比較項目 | Fix | Int |
---|---|---|
小数の切り捨て方向 | ゼロに近づける | より小さい方向に切り捨て |
負の数の処理結果 | -4.5 → -4 | -4.5 → -5 |
主な用途 | 符号維持・整数取得 | 数学的に「下限」の整数取得 |