VBA Round, RoundUp, RoundDown関数

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 3月 16, 2022

VBAで数値を丸める

VBAのRound 関数は、数値を指定された桁数に丸める関数です。

VBA Round 関数のシンタックス

VBA Round 関数のシンタックスは次のとおりです。

Round(数値, [桁数])

  • 数値 – 丸める数値。
  • 桁数(オプション) – 丸める小数点以下の桁数を指定する整数。この値は、0 以上でなければなりません (>=0)。空白の場合、既定値として 0 が使用され、最も近い整数に丸められます。

それでは、VBAのRound関数がどのように機能するのか、小数点以下1桁に丸める例を見てみましょう。

Sub Round1()

Msgbox Round(7.25, 1)

End Sub

その結果、以下のようなメッセージボックスが表示されます。

VBA Round to 1 Decimal

VBA 変数を丸める

上の例では、丸めたい数値を直接関数に入力しましたが、通常は代わりに変数を丸めることになります。以下は、変数を使った例です。

注:10進数の値を扱うため、Doubleデータ型を使用しています。

Sub RoundUsingVariable()

Dim unitcount As Double

unitcount = 7.25

MsgBox "The value is " & Round(unitcount, 1)

End Sub

結果は次のとおりです。

Rounding to 1 decimal place with a variable example

VBA 丸め込み結果

実際の数値 小数点以下の桁数 結果
7.25 0 7
7.25 1 7.2
7.25 2 7.25
-7.25 1 -7.2
-7.25 2 -7.25

 

VBA セルの値を丸める

VBAでは、セルの値を直接丸めることもできます。

Sub RoundCell()
Range("A1").Value = Round(Range("A1").Value, 2)
End Sub

VBA RoundUp関数

VBAを使って、数値を切り上げたいとします。VBAにはRoundUpに相当する組み込み関数がありませんが、その代わりにVBAのコードからExcelのRoundUpワークシート関数を呼び出すことができます。

roundupUnitcount = Application.WorksheetFunction.RoundUp(unitcount, 3)

WorksheetFunctionオブジェクトを利用して、Excelのワークシート関数をVBAで使用することができます。呼び出すことができないワークシート関数は、すでにVBAに相当するものが組み込まれているものだけです。

Excelワークシートラウンドアップ関数の構文は次のとおりです。

ROUNDUP(数値, 桁数)

  • 数値 – 切り上げたい数値
  • 桁数 – 丸めたい数値の桁数

それでは、VBAコードの中でRoundUpワークシート関数にアクセスする方法を確認するために、例を見てみましょう。

Sub RoundUp()

Dim unitcount As Double

Dim roundupUnitcount As Double

unitcount = 7.075711

roundupUnitcount = Application.WorksheetFunction.RoundUp(unitcount,4)です。

MsgBox "The value is " & roundupUnitcount

End Sub

結果は次のとおりです。

Rounding Up to Four Decimal Places using VBA

最も近い整数への切り上げ

小数点以下の桁数に0を指定すると、小数点以下を切り上げることができます。

Sub RoundUpWhole()

MsgBox Application.WorksheetFunction.RoundUp(7.1, 0)

End Sub

結果は次のとおりです。

Rounding Up to the Nearest Integer using VBA

RoundUp関数の結果

実際の数値 桁数 結果
7.075711 0 8
7.075711 1 7.1
7.075711 2 7.08
7.075711 3 7.076
7.075711 -1 10
7.075711 -2 100
7.075711 -3 1000

VBA RoundDown関数

例えば、VBAを使って数値を切り捨てたいとします。VBAにはRoundDownに相当する組み込み関数がないので、やはりVBAのコードからExcelのRoundDownワークシート関数を呼び出すことになります。

ExcelワークシートのRoundDown関数の構文は次のとおりです。

ROUNDDOWN(数値, 桁数)

  • 数値 – 切り捨てたい数値
  • 桁数 – 丸めたい数値の桁数

それでは、VBAコードの中でRoundDownワークシート関数にアクセスする方法を確認してみましょう。

Sub RoundDown()

Dim unitcount As Double

Dim rounddownUnitcount As Double

unitcount = 5.225193

rounddownUnitcount = Application.WorksheetFunction.RoundDown(unitcount, 4)

MsgBox "The value is " & rounddownUnitcount

End Sub

結果は次のとおりです。

VBA RoundDown

最も近い整数への切り捨て

小数点以下の桁数に0を指定することで、小数点以下を切り捨てることができます。

Sub RoundDownWhole()

MsgBox Application.WorksheetFunction.RoundDown(7.8, 0)

End Sub

結果は次のとおりです。

VBA RoundDown to Nearest Integer

RoundDown関数の結果

実際の数値 桁数 結果
5.225193 0 5
5.225193 1 5.2
5.225193 2 5.22
5.225193 3 5.225
5.225193 -1 0
5.225193 -2 0
5.225193 -3 0

その他のVBA丸め関数

VBA Ceiling – 指定された基準値に切り上げる

VBAにはCeiling.Math関数に相当するものはありません。したがって、数値を最も近い整数または指定した有効数字の倍数に丸めたい場合は、VBAコードからExcelのCeiling.Mathワークシート関数を呼び出すことになります。

ExcelのCeiling.Mathワークシート関数の構文は次のとおりです。

CEILING.MATH(数値, [基準値], [モード])

  • 数値 – 四捨五入したい数。
  • 基準値 (オプション) – 四捨五入される数値の倍数。
  • モード (オプション) – 負の数をゼロの方向に丸めるか、またはゼロから離れるように丸めるかを制御します。

それでは、VBAコードの中でCeiling.Mathワークシート関数にアクセスする方法を確認するために、例を見てみましょう。

Sub RoundUpToSignificance()

Dim unitcount As Double

Dim ceilingmathUnitcount As Double

unitcount = 4.1221 

ceilingmathUnitcount = Application.WorksheetFunction.Ceiling.Math(unitcount, 5)

MsgBox "The value is " & ceilingmathUnitcount

End Sub

結果は次のとおりです。

VBA RoundUp With Ceiling.Math

基準値への切り上げ結果

実際の数値 基準値 モード 結果
4.1221 5
4.1221 3 6
4.1221 50 50
-4.1221 3 -3
-4.1221 3 -1 -6

VBA Floor – 指定された基準値に切り捨てる

VBAには、Floor.Math関数に相当するものもありません。しかし、もう一度言いますが、数値を最も近い整数または最も近い指定された有効数字の倍数に切り捨てたい場合、ExcelのFloor.Mathワークシート関数をVBAから呼び出すことができます。

ExcelのFloor.Mathワークシート関数の構文は以下のとおりです。

FLOOR.MATH(数値, [基準値], [モード])

  • 数値 – 切り捨てたい数。
  • 基準値 (オプション) – 四捨五入される数値の倍数。
  • モード (オプション) – 負の数がゼロに向かって丸められるか、またはゼロから離れるかを制御します。

それでは、VBAコードの中でFloor.Math Worksheet関数にアクセスする方法を確認するために、例を見てみましょう。

Sub RoundDownToSignificance()

Dim unitcount As Double
Dim floormathUnitcount As Double

unitcount = 4.55555559
floormathUnitcount = Application.WorksheetFunction.Floor_Math(unitcount, 2)

MsgBox "The value is " & floormathUnitcount

End Sub

結果は以下のとおりです。

VBA RoundDown to Specified Significance

基準値への切り捨ての結果

実際の数値 基準値 モード 結果
4.55555559 4
4.55555559 3 3
4.55555559 50 0
-4.55555559 3 -6
-4.55555559 3 -1 -3
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples