VBA Round 関数:四捨五入や切り捨て、切り上げする

はじめに

Excel VBA マクロの Round 関数から四捨五入や切り捨て、切り上げする方法を紹介します。

Round 関数は、小数の桁数を指定して偶数丸めした値を返します。

2.5 なら 2 になるように、偶数になるように四捨五入されます。

Excel の「ROUND 関数ROUNDDOWN 関数ROUNDUP 関数」から、四捨五入や切り捨て、切り上げができます。

Excel の関数を使用するには「WorksheetFunction」をご覧ください。
  • 目次
    • Round 関数
    • 解説
    • 使用例

Round 関数

Round(数値)
数値が整数になるように偶数丸めします。

Round(数値, 桁数)
指定した小数の桁数になるように偶数丸めします。

引数「数値」数値を指定します。
引数「桁数」省略できます。小数点以下の桁数を指定します。
戻り値の型引数「数値」と同じ数値型

解説

偶数丸めとは、丸める桁数の値が 5 のときに偶数になるように丸められることです。それ以外は四捨五入と同じです。

変換前 変換後
0.50
1.52
2.52
3.54

引数「桁数」を省略したときは、整数になるように偶数丸めします。これは 0 を指定したときと同じです。

引数「桁数」が 1 なら、小数を 1 桁残します。 1.2341.2

Integer 型などの整数型に小数を含む数値を代入したときも自動で偶数丸めされています。

海外では四捨五入より偶数丸めが一般的なため、このようになっています。

四捨五入や切り捨て、切り上げ

Excel の「ROUND 関数ROUNDDOWN 関数ROUNDUP 関数」から、四捨五入や切り捨て、切り上げができます。整数や小数の桁数も指定できます。

VBA の関数で四捨五入をするには「Format 関数」を使用します。

VBA の関数で切り捨てするには「Fix 関数」を使用します。

どちらも Excel の関数を使った方が簡単で桁数も指定できて便利です。

使用例

偶数丸めする。

Dim f As Single

f = Round(1.234)
Debug.Print(f) ' 1

f = Round(1.5)
Debug.Print(f) ' 2

f = Round(2.4)
Debug.Print(f) ' 2

f = Round(2.5)
Debug.Print(f) ' 2

f = Round(2.6)
Debug.Print(f) ' 3

f = Round(1.234, 0) ' 2 を丸める
Debug.Print(f) ' 1

f = Round(1.234, 1) ' 3 を丸める
Debug.Print(f) ' 1.2

f = Round(1.234, 2) ' 4 を丸める
Debug.Print(f) ' 1.23

整数型に小数を含む数値を代入すると自動で丸められます。

Dim i As Integer
i = 1.5
Debug.Print(i) ' 2

i = 2.5
Debug.Print(i) ' 2

i = 3.5
Debug.Print(i) ' 4

整数の桁を丸める。

Const num As Integer = 1555
Dim i As Integer

i = Round(num / 10) * 10
Debug.Print(i) ' 1560

i = Round(num / 100) * 100
Debug.Print(i) ' 1600

i = Round(num / 1000) * 1000
Debug.Print(i) ' 2000

四捨五入

Excel の「エクセル ROUND 関数:四捨五入する」から、桁数を指定して整数や小数を四捨五入できます。

Dim f As Single
f = WorksheetFunction.Round(123.456, 2)
Debug.Print(f) ' 123.46

f = WorksheetFunction.Round(123.456, 1)
Debug.Print(f) ' 123.5

f = WorksheetFunction.Round(123.456, 0)
Debug.Print(f) ' 123

f = WorksheetFunction.Round(123.456, -1)
Debug.Print(f) ' 120

f = WorksheetFunction.Round(123.456, -2)
Debug.Print(f) ' 100

切り捨て

Excel の「エクセル ROUNDDOWN 関数:切り捨てする」から、桁数を指定して整数や小数を切り捨てできます。

Dim f As Single
f = WorksheetFunction.RoundDown(123.456, 2)
Debug.Print(f) ' 123.45

f = WorksheetFunction.RoundDown(123.456, 1)
Debug.Print(f) ' 123.4

f = WorksheetFunction.RoundDown(123.456, 0)
Debug.Print(f) ' 123

f = WorksheetFunction.RoundDown(123.456, -1)
Debug.Print(f) ' 120

f = WorksheetFunction.RoundDown(123.456, -2)
Debug.Print(f) ' 100

切り上げ

Excel の「エクセル ROUNDUP 関数:切り上げする」から、桁数を指定して整数や小数を切り上げできます。

Dim f As Single
f = WorksheetFunction.RoundUp(123.456, 2)
Debug.Print(f) ' 123.46

f = WorksheetFunction.RoundUp(123.456, 1)
Debug.Print(f) ' 123.5

f = WorksheetFunction.RoundUp(123.456, 0)
Debug.Print(f) ' 124

f = WorksheetFunction.RoundUp(123.456, -1)
Debug.Print(f) ' 130

f = WorksheetFunction.RoundUp(123.456, -2)
Debug.Print(f) ' 200