Excel125|人民幣阿拉伯數字轉中文大寫

文章 教育 韓老師講office 韓老師講office 2017-08-26

問題來源

NUMBERSTRING函數的缺陷

韓老師此前寫過一篇文章:Excel113 | NUMBERSTRING和TEXT函數:阿拉伯數字和中文數字轉換,裡面提到人民幣數字轉中文大寫的一種方法:NUMBERSTRING函數,但:NUMBERSTRING函數的侷限是:僅能計算整數,小數部分四捨五入。

如下圖:

Excel125|人民幣阿拉伯數字轉中文大寫

設置單元格格式的缺陷

設置單元格格式,可以設置成【特殊】——【中文大寫數字】,但小數部分只能“逐字直譯”成大寫,不能寫成“幾角幾分”。

Excel125|人民幣阿拉伯數字轉中文大寫

以上兩種方法不行,只能求助函數了。

函數實現

公式

=SUBSTITUTE(SUBSTITUTE(IF(-RMB(A2,2),TEXT(A2,";負")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零元整"),"零角",IF(A2^2<1,,"零")),"零分","整")

Excel125|人民幣阿拉伯數字轉中文大寫

公式分步解析

-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函數替換“零角”為“零”,“零分”為“整”。

相關推薦

推薦中...