Accessで業務システムを構築していると、「小数点以下は表示しない」「帳票では四捨五入したい」「計算は小数で保持して画面だけ整数表示したい」といった要件が頻繁に発生します。
Accessには四捨五入・切り上げ・切り捨て・表示形式変更など複数の方法があり、用途によって使い分けることが重要です。
実際の業務では、
- 売上金額
- 単価計算
- 放射線測定値
- 稼働率
- 原価計算
- 在庫数量
などで小数点処理が必要になります。
今回はAccess VBAでよく使用する「数値の丸め処理」と「整数表示」の実践テクニックについて紹介します。また近年はCopilotを活用することでVBAコード作成や検証も効率化できるため、その活用方法もあわせて解説します。
小数点処理でよくある悩み
開発現場では次のような相談がよくあります。
- 123.456 → 123.46にしたい
- 123.456 → 123にしたい
- 123.001 → 124にしたい
- 表示だけ整数にしたい
- 計算結果だけ丸めたい
- Excelと結果が違う
一見単純に見えますが、実はAccessには複数の丸め処理が存在します。
その違いを理解しておくことが重要です。
Accessで利用できる主な数値処理
代表的な関数は次の通りです。
| 関数 | 内容 |
|---|---|
| Round | 四捨五入 |
| Int | 切り捨て |
| Fix | 整数部分取得 |
| Format | 表示形式変更 |
| CInt | 整数変換 |
| CLng | Long型変換 |
まずはそれぞれの特徴を確認していきます。
四捨五入したい
最も利用頻度が高い処理です。
例えば小数第2位で四捨五入する場合です。
Dim dblValue As Double
dblValue = 123.4567
Debug.Print Round(dblValue, 2)
結果
123.46
小数第1位の場合
Debug.Print Round(dblValue, 1)
結果
123.5
小数点なしの場合
Debug.Print Round(dblValue, 0)
結果
123
AccessのRound関数で注意すること
意外と知られていないのですが、
Round(2.5,0)
の結果は
2
になります。
これは銀行丸め(Banker’s Rounding)という方式です。
同様に、
Round(3.5,0)
は
4
になります。
Excelの四捨五入と異なるケースがあるため注意が必要です。
帳票や請求金額などで厳密な四捨五入が必要な場合は独自関数を作成するケースもあります。
一般的な四捨五入を行いたい
誰もが想像する四捨五入を実現したい場合です。
Function MyRound(ByVal Value As Double) As Long
MyRound = Int(Value + 0.5)
End Function
実行例
Debug.Print MyRound(2.5)
結果
3
一般的な感覚に近い結果になります。
小数点以下を切り捨てたい
単純に整数部分だけ取得したい場合です。
Dim dblValue As Double
dblValue = 123.987
Debug.Print Int(dblValue)
結果
123
非常によく利用します。
例えば在庫数や件数表示などで便利です。
Int関数とFix関数の違い
見落としがちなポイントです。
正数では結果は同じです。
Debug.Print Int(123.9)
Debug.Print Fix(123.9)
結果
123
123
しかし負数になると変わります。
Debug.Print Int(-123.9)
Debug.Print Fix(-123.9)
結果
-124
-123
負数処理があるシステムでは重要な知識です。
切り上げを行いたい
Accessに専用関数はありません。
次のように実装します。
Function MyCeiling(ByVal Value As Double) As Long
If Value = Int(Value) Then
MyCeiling = Value
Else
MyCeiling = Int(Value) + 1
End If
End Function
実行例
Debug.Print MyCeiling(123.1)
結果
124
小数点を表示しない
実は最も利用頻度が高いのは表示制御です。
計算値は保持しながら表示だけ整数に変更したいケースです。
テキストボックスの書式に次を設定します。
0
または
#,##0
表示例
123.456
↓
123
元データは保持されます。
カンマ付き整数表示をしたい
金額管理では必須です。
Format(Me!売上金額, "#,##0")
結果
1234567
↓
1,234,567
請求書や集計表でよく利用します。
小数点2桁まで表示したい
Format(Me!測定値, "#,##0.00")
結果
123.4
↓
123.40
桁数を揃えたい帳票で便利です。
クエリで四捨五入したい
クエリ内でも利用できます。
計算値: Round([単価]*[数量],2)
結果例
123.4567
↓
123.46
帳票出力前の集計処理でよく利用します。
Accessフォームで利用する
例えば測定値入力フォームです。
Private Sub 測定値_AfterUpdate()
Me!測定値 = Round(Me!測定値, 2)
End Sub
入力後に自動で丸め処理が実行されます。
利用者側の入力負荷も減らせます。
帳票出力時だけ整数表示したい
レポートでは計算値を保持したまま表示だけ変更できます。
コントロールソース
=Format([測定値],”#,##0″)
結果
123.456
↓
123
データ自体は変更されません。
実務活用例① 測定値の管理
測定値では小数点管理が多くあります。
保存値
0.4567
表示値
0.46
コード
Round(測定値,2)
報告書の視認性向上につながります。
実務活用例② 稼働率管理
稼働率計算です。
稼働率 = 稼働時間 / 総時間 * 100
表示
Format(稼働率,"0.0")
結果
95.678
↓
95.7
管理資料に最適です。
実務活用例③ 金額管理
経理資料や請求処理では定番です。
Format(金額,"#,##0")
結果
12345678
↓
12,345,678
見やすさが大幅に向上します。
Copilot活用術① 数値処理コード生成
Copilotへ次のように依頼します。
Access VBAです。
小数第3位を四捨五入し
小数第2位まで表示するコードを作成してください。
基本コードをすぐに作成できます。
Copilot活用術② 丸め誤差の調査
Copilotへ質問します。
Access VBAのRound関数で
2.5が2になる理由を教えてください。
銀行丸めの仕組みを効率的に調査できます。
Copilot活用術③ VBA関数の作成
Access VBAです。
切り上げ関数を作成してください。
負数にも対応してください。
業務要件に合わせた関数作成を支援してもらえます。
数値処理で失敗しないポイント
表示とデータを分ける
おすすめは次の考え方です。
- データは小数で保持
- 表示時のみ丸める
- 帳票時のみ整形する
これにより再計算が可能になります。
金額は事前にルールを決める
- 四捨五入
- 切り上げ
- 切り捨て
どの方式を採用するか事前に明確化しましょう。
Round関数の仕様を理解する
銀行丸めを理解せず利用すると予期せぬ結果になることがあります。
特に経理系システムでは注意が必要です。
まとめ
Access VBAでは、四捨五入・切り捨て・切り上げ・表示形式変更など様々な数値処理を実装できます。
特に実務でよく利用するのは次の処理です。
- Roundによる四捨五入
- Intによる切り捨て
- Formatによる表示制御
- カンマ区切り表示
- 小数桁数の統一
また近年はCopilotを活用することで、VBAコード生成や丸め処理の検証を効率化できます。
見落とされがちなテーマではありますが、実際の業務システムでは非常に利用頻度が高く、知っているだけで開発効率と保守性が大きく向上するテクニックです。


コメント