組込関数 Fix

数値・数学関数

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.544同じ
-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 関数との違いを正しく理解することが、意図した通りのプログラムを組む上で極めて重要です。

比較項目FixInt
小数の切り捨て方向ゼロに近づけるより小さい方向に切り捨て
負の数の処理結果-4.5 → -4-4.5 → -5
主な用途符号維持・整数取得数学的に「下限」の整数取得
タイトルとURLをコピーしました