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
以下の動画で関連する内容がご覧いただけます。
2024年11月20日 21:41
小川 慶一さん
2024年11月20日 21:28
AIユーザさん
2024年11月14日 17:04
小川 慶一さん
2024年11月13日 18:12
AIユーザさん
2024年11月13日 18:11
田中 宏明さん