Round関数の使い方と注意点
Round関数は、数値を指定された桁数で四捨五入する関数です。
構文
Round(数値[, 桁数])
- 数値 : 絶対値を返したい数値または式
-
桁数 : 四捨五入したい桁数
少数第1位置が0。
省略可。省略時は0 - 戻り値 : 指定した桁数で四捨五入された数値
使用例
こちらの例では1.23456
の0
, 2
, 4
桁目に対してRound関数を実行しています。
Sub Sample()
Debug.Print "Round(1.23456) : " & Round(1.23456)
Debug.Print "Round(1.23456, 2) : " & Round(1.23456, 2)
Debug.Print "Round(1.23456, 4) : " & Round(1.23456, 4)
End Sub
▶ 出力結果
Round(1.23456) : 1
Round(1.23456, 2) : 1.23
Round(1.23456, 4) : 1.2346
1つ目は1.23456
の0
桁目(少数第1位)の2
で四捨五入されるため1
2つ目は1.23456
の2
桁目(少数第3位)の4
で四捨五入されるため1.23
3つ目は1.23456
の4
桁目(少数第5位)の6
で四捨五入されるため1.2346
負の数値を指定した場合も同様です。
Sub Sample()
Debug.Print "Round(-1.23456) : " & Round(-1.23456)
Debug.Print "Round(-1.23456, 2) : " & Round(-1.23456, 2)
Debug.Print "Round(-1.23456, 4) : " & Round(-1.23456, 4)
End Sub
▶ 出力結果
Sub Sample()
Round(-1.23456) : -1
Round(-1.23456, 2) : -1.23
Round(-1.23456, 4) : -1.2346
End Sub
⚠️注意
単純な四捨五入ではなく銀行丸めが使われる。
Round関数は単純に指定した桁数で四捨五入するだけではなく、銀行丸め
も行われます。
意図と違う結果になる可能性がある点に注意しましょう。
銀行丸めとは
四捨五入で「ちょうど .5 のとき」、最も近い偶数に丸める方法です。
式 | 結果 |
---|---|
Round(0.5) | 0 |
Round(1.5) | 2 |
Round(2.5) | 2 |
Round(3.5) | 4 |
Round(4.5) | 4 |
Round(5.5) | 6 |
単純な四捨五入をしたい場合には、Format関数
やワークシート関数のRoundメソッド
を使用しましょう。
Sub Sample()
Debug.Print Format(0.5, 0)
Debug.Print Format(1.5, 0)
Debug.Print Format(2.5, 0)
Debug.Print Format(3.5, 0)
Debug.Print Format(4.5, 0)
Debug.Print Format(5.5, 0)
End Sub
▶ 出力結果
1
2
3
4
5
6
数値(半角または全角)以外はエラーになる
Round関数の引数に半角または全角の数値
以外を指定するとエラーになります。
Sub Sample()
On Error Resume Next
Err.Clear
Debug.Print "半角英字 : " & Round("Abc")
If Err.Number <> 0 Then Debug.Print "半角英字 : エラー:" & Err.Description
Err.Clear
Debug.Print "全角英字 : " & Round("Abc")
If Err.Number <> 0 Then Debug.Print "全角英字 : エラー:" & Err.Description
Err.Clear
Debug.Print "ひらがな : " & Round("あいう")
If Err.Number <> 0 Then Debug.Print "ひらがな : エラー:" & Err.Description
Err.Clear
Debug.Print "漢字 : " & Round("亜伊宇")
If Err.Number <> 0 Then Debug.Print "漢字 : エラー:" & Err.Description
Err.Clear
Debug.Print "半角記号 : " & Round("!?#")
If Err.Number <> 0 Then Debug.Print "半角記号 : エラー:" & Err.Description
Err.Clear
Debug.Print "全角記号 : " & Round("!?#")
If Err.Number <> 0 Then Debug.Print "全角記号 : エラー:" & Err.Description
Err.Clear
Debug.Print "半角数字 : " & Round("-1.23")
If Err.Number <> 0 Then Debug.Print "半角数字 : エラー:" & Err.Description
Err.Clear
Debug.Print "全角数字 : " & Round("-1.23")
If Err.Number <> 0 Then Debug.Print "全角数字 : エラー:" & Err.Description
Err.Clear
Debug.Print "スペース : " & "[" & Round("1. 2 3") & "]"
If Err.Number <> 0 Then Debug.Print "スペース : エラー:" & Err.Description
On Error GoTo 0
End Sub
▶ 出力結果
半角英字 : エラー:型が一致しません。
全角英字 : エラー:型が一致しません。
ひらがな : エラー:型が一致しません。
漢字 : エラー:型が一致しません。
半角記号 : エラー:型が一致しません。
全角記号 : エラー:型が一致しません。
半角数字 : -1
全角数字 : -1
スペース : エラー:型が一致しません。
上記ではエラー発生時にエラーを無視して次の処理を実行するよう記述していますが、
エラーを無視する記述が無い場合、エラー時に処理が止まってしまいます。
引数に渡す内容には注意しましょう。
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方