ExcelVBA技
全般
E13M016
E13M016 (Excel2000~2013)
JISの規定による数値の丸め方
JIS Z 8401に規定された数値の丸めを行う関数を示します。
数値を丸めて指定した桁数にするkRoundJ関数と、数値を丸めて指定した有効桁数にするkRound2J関数です。
規定では、「ある数値を有効桁数n桁の数値に丸める場合、または小数点以下n桁の数値に丸める場合には(n+1)桁目以下の数値をつぎのように整理する」となっており、基本的には四捨五入の方法であり異なるのは次の場合です。
(n+1)桁目以下の数値が5であるか、または(n+1)桁目以下の数値が切り捨てたものか切り上げたが分からない場合で、n桁目の数値が偶数(0,2,4,6,8)ならば切り捨てるというものです。(規則A)
'kRoundJ 関数 '数値を丸めて指定した桁数にします '書式 kRoundJ(数値, 桁数) '数値 丸めの対象となる数値を指定します '桁数 数値を丸めた結果の桁数を指定します '例 =kRoundJ(0.0625,3) → 0.062 =kRoundJ(125.1,-1) → 130 ' =kRoundJ(0.095,2) → 0.10 =kRoundJ(125,-1) → 120 Function kRoundJ(ex As Double, num As Long) As Double If num >= 0 Then kRoundJ = Round(ex, num) Else kRoundJ = Round(ex * 10 ^ num, 0) * 10 ^ (num * -1) End If End Function 'kRound2J 関数 '数値を丸めて指定した有効桁数にします '書式 kRound2J(数値, 有効数字の桁数) '数値 丸めの対象となる数値を指定します '有効数字の桁数 数値を丸めた結果の有効数字の桁数を指定します '例 =kRound2J(0.1045,3) → 0.104 =kRound2J(2235,3) → 2240 Function kRound2J(ex As Double, num As Long) As Double kRound2J = kRoundJ(ex, -Int(Application.Log(Abs(ex))) - 1 + num) End Function