0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Round関数の使い方と注意点

Round関数は、数値を指定された桁数で四捨五入する関数です。

構文

Round(数値[, 桁数])
  • 数値 : 絶対値を返したい数値または式
  • 桁数 : 四捨五入したい桁数
    少数第1位置が0。
    省略可。省略時は0
  • 戻り値 : 指定した桁数で四捨五入された数値

使用例

こちらの例では1.234560, 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.234560桁目(少数第1位)の2で四捨五入されるため1
2つ目は1.234562桁目(少数第3位)の4で四捨五入されるため1.23
3つ目は1.234564桁目(少数第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
スペース : エラー:型が一致しません。

上記ではエラー発生時にエラーを無視して次の処理を実行するよう記述していますが、
エラーを無視する記述が無い場合、エラー時に処理が止まってしまいます。
引数に渡す内容には注意しましょう。

error.png

その他のVBA関数

【Excel VBA】VBAでよく使う関数一覧&基本の使い方

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?