← コード一覧へ戻る
実務検索・集計

小数点以下の桁数を指定して丸める

VBAのRoundとExcelのWorksheetFunction.Roundを比較し、端数がちょうど半分のときの違いを確認します。

実行前に確認

  • VBAのRoundは銀行丸めです。ちょうど中間の値では偶数側へ丸めるため、一般的な四捨五入と結果が異なる場合があります。
  • 小数を計算するDoubleには2進数での誤差があります。金額などは必要な丸め規則と境界値を確認してください。
  • 丸める処理は値を変えます。見た目の表示桁数だけを揃える処理とは別です。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Sub Example7069()
    Dim value As Double
    Dim result As String

    value = 2.5
    result = "VBA Round(2.5, 0): " & Round(value, 0) & vbCrLf & _
             "Excel ROUND(2.5, 0): " & Application.WorksheetFunction.Round(value, 0) & vbCrLf & _
             "小数第2位まで: " & Application.WorksheetFunction.Round(12.345, 2)
    MsgBox result, vbInformation, "丸め方の違い"
End Sub

図で見る2.5の丸め方を比較する

イメージ図

VBAとExcelの丸め方の違いに加え、小数第2位まで丸める例を確認します。

  1. 2つの数値を用意

    value = 2.5と、小数第2位まで丸める12.345を使用

  2. 2種類のRoundで計算

    VBA RoundとExcel WorksheetFunction.Roundで2.5を整数化。12.345はExcelで2桁に丸める

  3. 2・3・12.35を表示

    VBAの2.5は2、Excelの2.5は3、Excelの12.345は12.35になる

VBA Roundは中間値を偶数側へ丸めます。表示書式ではなく数値自体を変える処理で、Doubleの誤差にも注意します。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。

  2. 2

    セルの準備は不要です。2.5を整数へ丸める例と、12.345を小数第2位まで丸める例を比較します。

  3. 3

    Example7069のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    VBA Roundは2、Excel ROUNDは3、小数第2位までの結果は12.35と表示されます。

使っている機能の公式ドキュメント(Microsoft Learn)