ExcelVBA技 全般 E13M015

E13M015 (Excel2000~2013)
数値を任意の有効桁数に四捨五入する

VBAで四捨五入を行う場合は、ワークシート関数(組込み関数)によるWorksheetFunction.Roundメソッドを用いて簡単に行えます。
ここでは、数値を任意の有効桁数に四捨五入するkRound2関数を示します。
また、数値を任意の有効桁数に切上げるkRoundup2関数、数値を任意の有効桁数に切下げるkRounddown2関数もあわせて示します。

'kRound2 関数
'数値を四捨五入して指定した有効桁数にします
'書式 kRound2(数値, 有効数字の桁数)
'数値      四捨五入の対象となる数値を指定します
'有効数字の桁数 数値を四捨五入した結果の有効数字の桁数を指定します
'例 =kRound2(0.1055,3) → 0.106   =kRound2(5455,3) → 5460
Function kRound2(ex#, num&) As Double
  kRound2 = Application.Round(ex, -Int(Application.Log(Abs(ex))) - 1 + num)
End Function

'kRoundup2 関数  '数値を任意の有効桁数に切上げる
Function kRoundup2(ex#, num&) As Double
  kRoundup2 = Application.RoundUp(ex, -Int(Application.Log(Abs(ex))) - 1 + num)
End Function

'kRounddown2 関数  '数値を任意の有効桁数に切下げる
Function kRounddown2(ex#, num&) As Double
  kRounddown2 = Application.RoundDown(ex, -Int(Application.Log(Abs(ex))) - 1 + num)
End Function