こんにちは。テレワーカーYです。
エクセルでマクロを組むときに、四捨五入をどうやって行うかについて綴っていきたいと思います。
VBAの組み込み関数にRoundというものがあります。例えばRound(“1.23”,1)=1.2と言った具合です。だったらこれを使えば良いと思う方もいらっしゃるかもしれませんが、VBAのRoundは、一般的な(算数で習った)四捨五入で無く、偶数丸めと言われるものです。銀行丸めとかJIS丸めとも言います。どうしてこういう仕様になっているのかは判りませんが……。
この偶数丸めというのは、Round(“1.15”,1)=1.2、Round(“1.25”,1)=1.2となるものです。この例で言うと、ちょうど小数点2桁目が5の時に、小数点1桁目が奇数か偶数かによって扱いが異なり、奇数なら繰り上げ、偶数なら切り下げとなります。
したがって、特に偶数丸めで行わなくてはならない場合を除いては、他の方法で四捨五入を行わないとなりません。
一つの方法は、ワークシート関数を用いることです。
Application.WorksheetFunction.Round(元の数字,小数点以下の桁数)
となります。
もう一つは、VBAのFormat関数を用いる方法です。小数点以下1桁で四捨五入する場合は、次の通りです。
Format(元の数字,”0.0″)
丸める桁によって、第2引数の書式を変えて下さい。
なお、切り上げ、切り捨ての場合は、それぞれ以下の通りです。
Application.WorksheetFunction.RoundUp(元の数字,小数点以下の桁数)
Application.WorksheetFunction.RoundDown(元の数字,小数点以下の桁数)
こちらはワークシート関数を用います。
コメント