Excel VBAで数値を四捨五入する:Round

VBAで四捨五入を行うには、Round関数を使用します。今回はその使い方をご紹介します。

数値の四捨五入を行なう

VBAでは、小数値の場合はRoundを使用できます。構文は下記の通りです。

Round(数値,四捨五入する桁数(省略可能))

桁数は小数値の場合、小数点以下第1位以降から0、1、2、3……とカウントします。また、省略した場合(デフォルト)は整数値を返します。ただし、数値によっては四捨五入されるべきところで小数点以下が切り捨てられた数値を返すことがあります。

マクロ例:

Sub Round_sample_01()

  Dim splNum As Double
  Dim rndNum As Double

      splNum = 12345.6789012

  '下記数値(2. 5 および 0. 5)を代入する場合は、四捨五入とならず切り捨てとなるので注意
    'splNum = 2.5 (結果が2)   
    'splNum = 0.5 (結果が0)

    '整数値となる (結果:12346)
     rndNum = Round(splNum)

     MsgBox rndNum

    '上記と同じ (結果:12346)
    rndNum = Round(splNum, 0)

    MsgBox rndNum

    'この場合、小数点第4桁目で四捨五入される。(結果:12345.679)
    rndNum = Round(splNum, 3)

    MsgBox rndNum


    'この処理では実行時エラーとなる
    '(ワークシート関数のRound関数では、1の位で四捨五入の設定)
    rndNum = Round(splNum, -1)

    MsgBox rndNum

End Sub

VBAのRound関数では整数を四捨五入することはできないため、このマクロ例では、一番最後の

rndNum = Round(splNum, -1)

で実行時エラーとなります。(1の位は-1桁、以降10の位は-2……)このため、整数値の四捨五入にはApplication.WorksheetFunction.Round(数値, 桁数)を用いて、Excelのワークシートの関数を使用します。

Sub Round_sample_02()

  Dim splNum As Double
  Dim rndNum As Double

      splNum = 12345

      '1の位で四捨五入される (結果:12350)
      rndNum = Application.WorksheetFunction.Round(splNum, -1)

      MsgBox rndNum

End Sub

マクロ作成・実行上の注意点

VBAのRound関数は、

数値によって正確に四捨五入されない場合がある
整数は四捨五入できない

という仕様ですので注意が必要です。



イベント

2017/12/05(火)
Design Thinking Square