2019年1月11日 星期五

Excel奇進偶捨(四捨六入五成雙)進位的計算方法

最近因為工作的關係,必須在 EXCEL 的表格中使用奇進偶捨的進位方式。從小到大我只知道四捨五入,現在才知道原來四捨六入五成雙在統計上是比四捨五入更加精確。

上網查詢在 EXCEL 中該如何計算此進位法?看到一個網頁有提供一個 VBA 非常簡單好用,在此跟大家分享這個方法。

首先在 EXCEL 工作表按 Alt-F11 二個鍵,此時會出現 VBA 活頁簿,接著在 VBA 活頁簿的上方選單點選「插入」--「模組」,並將底下的文字貼到模組中,然後就可以關閉 VBA 活頁簿

Function BankerRound(rng As Double, sig As Integer) As Double
    BankerRound = Round(rng, sig)
End Function

使用時在儲存格輸入『=BankerRound(值,小數位數)』就可以得到四捨六入五成雙的進位結果了

修正:使用此VBA時,如果BankerRound的括弧裡面是公式,很可能會計算錯誤,所以建議當值是公式時不要使用。改用底下的計算方法:

=IF(AND(ISEVEN(值*10^小數位數),MOD(值*10^小數位數,1)<=0.5),ROUNDDOWN(值,小數位數),ROUND(值,小數位數))

參考資料:
https://stackoverflow.com/questions/44310679/bankers-rounding-function-in-excel