Excel VBA 四捨五入の偶数まるめ(round to even)

VBAで四捨五入をする関数についの備忘録。

VBAで多数の数値を四捨五入するような場合、

①ワークシート関数「Round」の利用

②VBAのRound関数の利用

代表的なものは二通り。

ただし、この①、②には違いがあるということ。

セルA1に入力された少数を、整数値に四捨五入する場合で試してみます。

①のワークシート関数使用例

Sub sample1()
    MsgBox Application.WorksheetFunction.Round(ActiveSheet.Range(“A1”), 0)
End Sub

②のVBAのRoud関数の使用例

Sub SAMPLE2()
    MsgBox Round(ActiveSheet.Range(“A1”), 0)
End Sub

結果

セルA1の値①の結果②の結果(偶数丸め)
1.411
1.522
1.622
2.422
2.532
2.633
3.433
3.544
3.644
4.444
4.554
4.655

という具合に、丸め方に違いが出てきます。

VBAのRound関数は「偶数まるめ」という丸め方なのです。(「銀行丸め」とも)

ご覧のとおり、普通の四捨五入では2.5→3、4.5→5になるはずですが、偶数まるめは端数が0.5のとき、結果が偶数になる方に丸める、と定められていて、四捨五入よりは望ましいということです。

四捨五入は端数が0.5より小さければ切り捨て、0.5より大きければ切り上げ、0.5の場合も切り上げということで、計算結果に偏りが生じる可能性が大きいということ。

結果が偶数・奇数で0.5の端数を切り捨てたり切り上げ足たりすることで、うまく相殺しているということらしいです。

よかったらシェアしてね!

この記事を書いた人

目次
閉じる