Excel VBAで四捨五入をするときの注意

今日は、Excelマクロ・VBAについての簡単なTipsを。

Excel VBAに、Round関数という関数があります。
どういう機能かというと、指定された小数点位置で四捨五入した数値を返すものです。

以下、サンプルです。

Sub RoundSample()  
    Range(“A1″).Value = Round(3.141592, 0) ’3になります  
    Range(“A2″).Value = Round(3.141592, 1) ’3.1になります  
    Range(“A3″).Value = Round(3.141592, 2) ’3.14になります  
    Range(“A4″).Value = Round(3.141592, 3) ’3.142になります  
    Range(“A5″).Value = Round(3.141592, 4) ’3.1416になります  
End Sub  

ここで、一点注意。
上で紹介したVBAのRound関数は、「銀行型丸め」または、「銀行丸め」と呼ばれる、ちょっと特殊な四捨五入をします
何のことやら?というあなたは、以下を参照。

Sub RoundGinkoSample()  
    Range(“B1″).Value = Round(10.5, 0) ’10になります  
    Range(“B2″).Value = Round(11.5, 0) ’12になります  
    Range(“B3″).Value = Round(12.5, 0) ’12になります  
    Range(“B4″).Value = Round(13.5, 0) ’14になります  
    Range(“B5″).Value = Round(14.5, 0) ’14になります  
End Sub[/vb]  

厳密な四捨五入ではなく、四捨五入する対象の数字がきっかり「5」の場合は、丸めたあとの数値が偶数になるように丸めます。
これでは困る、というときには、Worksheetfunction.Roundを使うと良いでしょう。以下の要領です。

Sub RoundWfuncSample()  
    Range(“C1″).Value = WorksheetFunction.Round(10.5, 0) ’11になります  
    Range(“C2″).Value = WorksheetFunction.Round(11.5, 0) ’12になります  
    Range(“C3″).Value = WorksheetFunction.Round(12.5, 0) ’13になります  
    Range(“C4″).Value = WorksheetFunction.Round(13.5, 0) ’14になります  
    Range(“C5″).Value = WorksheetFunction.Round(14.5, 0) ’15になります  
End Sub  

以下の動画で関連する内容がご覧いただけます。

公開日時: 2022/08/17 12:00