VBAで数値を扱っていると、次のようなことはありませんか?
- 小数点を四捨五入したい
- 金額計算を見やすくしたい
- 小数点以下の桁数を調整したい
このような場合は、Round関数を使うことで解決できます。
数値を指定した桁数で四捨五入できる、非常に便利な関数です。
この記事では、Round関数の基本から注意点、実務での活用方法まで分かりやすく解説します。
この記事でできること
- 数値を四捨五入できる
- 小数点桁数を調整できる
- 実務で使える数値処理が分かる
基本:Round関数の使い方
基本構文はこちらです。
Round(数値, 桁数)
| 引数 | 内容 |
|---|---|
| 数値 | 四捨五入したい値 |
| 桁数 | 小数点以下の桁数 |
基本例
MsgBox Round(3.14159, 2)
→ 3.14
整数へ四捨五入する
MsgBox Round(3.6, 0)
→ 4
小数点以下を指定する
MsgBox Round(123.4567, 1)
→ 123.5
負の桁数を使う
10の位・100の位で丸められます。
MsgBox Round(1234, -2)
→ 1200
セルに結果を書き込む
Range("A1").Value = Round(123.456, 2)
変数を使った例
Dim num As Double
num = 98.7654
MsgBox Round(num, 1)
→ 98.8
実務での活用例
- 金額計算
- 平均値表示
- レポート作成
- 小数点表示調整
帳票作成では非常によく使われます。
注意:VBAのRoundは「銀行丸め」
ここが非常に重要です。
VBAのRound関数は通常の四捨五入ではなく、銀行丸め(Banker’s Rounding)を行います。
例
MsgBox Round(2.5, 0)
→ 2
MsgBox Round(3.5, 0)
→ 4
偶数へ丸められる仕様です。
通常の四捨五入をしたい場合
WorksheetFunction.Round を使います。
MsgBox WorksheetFunction.Round(2.5, 0)
→ 3
Round・Int・Fixの違い
| 関数 | 内容 |
|---|---|
| Round | 四捨五入 |
| Int | 切り捨て |
| Fix | 0方向へ切り捨て |
安全な書き方(おすすめ)
Dim val As Variant
val = Range("A1").Value
If IsNumeric(val) Then
MsgBox Round(val, 2)
End If
よくあるエラーと対処法
① 思った結果にならない
銀行丸めの可能性があります。
② 型が一致しません
数値以外を渡している可能性があります。
③ 小数点表示が変わらない
セルの表示形式を確認してください。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- Roundは四捨五入する関数
- 小数点桁数を指定できる
- VBA特有の銀行丸めに注意
- 実務では非常に使用頻度が高い
Round関数を使いこなせるようになると、数値表示や計算処理が非常に便利になります。
特に「銀行丸め」の仕様は重要なので、必ず覚えておきましょう。

コメント