之前有一篇文章,里面提到人民幣數字轉中文大寫的一種方法:NUMBERSTRING函數,但:NUMBERSTRING函數的局限是:僅能計算整數,小數部分四舍五入。
如下圖:
公式分步解析
-RMB(A2,2)
按人民幣格式將數值四舍五入到兩位數并轉換成文本;
TEXT(A2,”;負”)
如果A2的金額小于0,則返回字符“負”;
TEXT(INT(ABS(A2)+0.5%),”[dbnum2]G/通用格式元;;”)
金額取絕對值,整數部分轉換為大寫,+0.5%避免0.999元等的情況下計算出現錯誤;
TEXT(RIGHT(RMB(A2,2),2),”[dbnum2]0角0分;;整”)
金額小數部分轉換為大寫;
IF(-RMB(A2,2),TEXT(A2,”;負”)&TEXT(INT(ABS(A2)+0.5%),”[dbnum2]G/通用格式元;;”)&TEXT(RIGHT(RMB(A2,2),2),”[dbnum2]0角0分;;整”),”零元整”)
IF進行判斷,如果金額不是0分,則返回大寫結果,否則返回零元整;
最后用兩個SUBSTITUTE函數替換“零角”為“零”,“零分”為“整”。