專欄限時活動即將結束,需要的趕緊加購噢!
大家好,在財務上我們經常會將小寫的金額轉換成大寫金額,利用EXCEL的單元格格式或是內置的函數都只能針對整數部分進行轉換,如果遇到有多位小數、整數、負數等混合的數據,上面兩種辦法都無法實現,今天我們使用組合函數的方式來解決這一問題。
本案例中多位小數採用的是四捨五入原則。
先來拆解函數公式,將輸入的數字分為整數和小數部分。
先看整數部分:
函數公式:TEXT(INT(ABS(A3)),"[DBNUM2]")&"元"
函數公式的意思:先將數字轉換成正數,然後取出整數部分,用TEXT函數轉換成大寫數字,後面添加元,遇到負數的情況,還得再處理。
修改函數公式,在前面添加IF判斷條件,如果數字小於0,則在前面添加“負”字。
接下來是小數部分的轉換
函數公式:TEXT(MOD(A3,1)*100,"[DBNUM2]0角0分")
函數意思:使用MOD求餘函數,讓數字除以1得到它的餘數也就是小數部分,使用函數TEXT將其轉換成大寫數字,面對負數的時候,這個公式也有問題,負數求餘,除數應該修改為“-1”。
於是修改函數公式:SUBSTITUTE(IF(A3<0,TEXT(MOD(A3,-1)*100,"[DBNUM2]0角0分"),TEXT(MOD(A3,1)*100,"[DBNUM2]0角0分")),"-","")
函數公式意思:先用IF條件判斷,如果小於1的數字,則MOD函數的除數是“-1”,否則就是“1”,由於負數的MOD餘數也是負數,需要用SUBSTITUTE函數將前面的符號“-”去除。
觀察下表格里的小數部分的轉換情況,裡面的“零角零分”“零角壹分”“壹角零分”都是書寫不規範的,需要替換掉。
有三種情況需要替換,故使用了三次“SUBSTITUTE”函數。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(A6<0,TEXT(MOD(A6,-1)*100,"[DBNUM2]0角0分"),TEXT(MOD(A6,1)*100,"[DBNUM2]0角0分")),"-",""),"零角零分","整"),"零分","整"),"零角","零")
最後將整數和小數部分的函數合在一起,組成完整的函數公式“=IF(A3<0,"負","")&TEXT(INT(ABS(A3)),"[DBNUM2]")&"元"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(A3<0,TEXT(MOD(A3,-1)*100,"[DBNUM2]0角0分"),TEXT(MOD(A3,1)*100,"[DBNUM2]0角0分")),"-",""),"零角零分","整"),"零分","整"),"零角","零")”。
函數公式比較長,理解起來其實也不難,不想理解的,直接拿去套用即可。