Round関数 銀行丸めです

 Round(数値 1, 数値 2) は小数点以下 [数値 2] + 1 の桁の値が 4 以下なら切り捨て、6 以上なら切り上げて [数値 2] の桁で丸めます。ただし [数値 2] + 1 の桁の値が 5 であった場合は [数値 2] の桁が偶数ならば切り捨て、奇数であれば切り上げます。
 戻り値は Single 型(単精度浮動小数点数型)です。

銀行丸め

 Round 関数は少し特殊な丸め処理をする関数です。
  [数値 2] に 0 を指定した場合を調べてみると、

  Round(0.5,0)  戻り値 0
  Round(1.5,0)  戻り値 2
  Round(2.5,0)  戻り値 2
  Round(3.5,0)  戻り値 4
  Round(4.5,0)  戻り値 4
  Round(5.5,0)  戻り値 6
  Round(6.5,0)  戻り値 6
  Round(7.5,0)  戻り値 8
  Round(8.5,0)  戻り値 8
  Round(9.5,0)  戻り値 10

 上の例では小数部分の値が 5 である場合、整数部分の値をみて偶数 (0, 2, 4, 6, 8) であれば切り捨てていますが、奇数 (1, 3, 5, 7, 9) であれば切り上げています。このように端数が 5 であった場合に偶数寄りに丸めることを 銀行丸め とよび、その名のとおり主に金融業務に用いられる丸め方です。
 

割り算をして指定する桁で丸めます

 割り算して指定した桁で丸めるファンクションマクロ(ユーザー定義関数)を載せておきます。

 Function DIVR(a As Double, b As Double, c As Long) As Double
  DIVR = Round(a / b, c)
 End Function

 引数に被除数 a, 除数 b, 残す桁 c を指定して、a/b を計算し、c + 1 の桁を参照して「銀行丸め」を実行します。たとえば

=DIVR(10,3,2)

と入力すると「 3.33 」を返します。
 

Excel の ROUND 関数で四捨五入します

 しかし「銀行丸めでは困る!」というケースも頻繁に生じるはずです。そういうときは普通に四捨五入を実行する Excel の ROUND 関数を呼び出して使います。さきほどの割り算のマクロを普通の四捨五入バージョンに書き換えると次のようになります。

 Function RD(a As Double, b As Double, c As Long) As Double
  RD = Application.WorksheetFunction.ROUND(a / b, c)
 End Function

 引数に被除数 a, 除数 b, 残す桁 c を指定して、a/b を計算し、c + 1 の桁を参照して「四捨五入」を実行します。

 ⇒ VBA 関数辞典トップページ

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください