=IF(ROUND(A5,2)<0,"無效數值","人民幣"&IF(ROUND(A5,2)=0,"零元",IF(ROUND(A5,2)<1,"",TEXT(INT(ROUND(A5,2)),"[dbnum2]")&"元")&IF(INT(ROUND(A5,2)*10)-INT(ROUND(A5,2))*10=0,IF(INT(ROUND(A5,2))*(INT(ROUND(A5,2)*100)-INT(ROUND(A5,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(A5,2)*10)-INT(ROUND(A5,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(A5,2)*100)-INT(ROUND(A5,2)*10)*10)=0,"整",TEXT((INT(ROUND(A5,2)*100)-INT(ROUND(A5,2)*10)*10),"[dbnum2]")&"分")))
還有以下方法:Excel將小寫金額轉換成人民幣的大寫金額
1、如何自定義:
打開EXCEL,新建壹個文件Book1,按ALT+F11進入VBA編程環境,選中這個BOOK1文件,插入模塊,將下面的源代碼復制到右邊的模塊代碼區內,然後將此BOOK1保存,保存類型壹定選加載宏,文件名嘛可自由發揮,我就填"中文大寫",確定OK!然後回到EXCEL,工具--加載宏-找到"中文大寫",打勾確定,我們這個自定義函數就可以象內置函數樣使用了!--->=rmbdx(123456.78),爽吧!
2、例子:
A、直接在函數內輸入數值的(請註意參數的用法,默認用法是不用輸入)
=rmbdx(123456.78)--->壹拾貳萬三仟肆佰伍拾陸元柒角捌分
=rmbdx(123456.78,0)--->壹拾貳萬三仟肆佰伍拾陸元柒角捌分
=rmbdx(123456.78,1)--->壹拾貳萬三仟肆佰伍拾陸元柒角捌分
=rmbdx(56.78)--->伍拾陸元柒角捌分
=rmbdx(0.78)--->柒角捌分
=rmbdx(0.784)--->柒角捌分
=rmbdx(0.785,1)--->柒角玖分
=rmbdx(0.02,1)--->貳分
B、引用某單元格數值進行轉換的
假設妳的D3單元格的數據(也可以是求和或其它公式得出的結果)需要轉換,大寫格式放在D4單元格,則D4輸入公式:=rmbdx(d3)即可
C、其它形如=rmbdx(SUM(C4:C6))的也可以,用法象內置函數,請靈活使用
3、源代碼:
Functionrmbdx(value,Optionalm=0)
’中文大寫源代碼,By對面男孩、redwin
’支持負數,支持小數點後的第三位數是否進行四舍五入處理
’默認參數為0,即不將小數點後的第三位數進行四舍五入處理
’2002-10-11--2002-10-13
OnErrorResumeNext
Dima
DimjfAsString’定義角分位
Dimj’定義角位
Dimf’定義分位
Ifvalue<0Then’處理正負數的情況
a="負"
Else
a=""
EndIf
IfIsNumeric(value)=FalseThen’判斷待轉換的value是否為數值
rmbdx="需轉換的內容非數值"
Else
value=Abs(CCur(value))
’當參數m不輸入(默認為0)或為0時,小數點後的第三數不進行四舍五入處理
’當參數m為1或其它數值時,小數點後的第三數進行四舍五入處理
Ifm=0Then
jf=Fix((value-Fix(value))*100)
value=Fix(value)+jf/100
Else’厘位進行四舍五入實踐很少用到,但還是要照顧到
value=Application.WorksheetFunction.Round(value,2)’-->這句是關鍵!只用round有bug
jf=Round((value-Fix(value))*100,0)
EndIf
Ifvalue=0Orvalue=""Then’當待轉換數值為0或空時,不進行轉換
rmbdx=""
Else
strrmbdx=Application.WorksheetFunction.Text(Int(value),"[DBNum2]")&"元"’轉換整數位
IfInt(value)=0Then
strrmbdx=""
EndIf
IfInt(value)<>valueThen
Ifjf>9Then’判斷小數位
j=Left(jf,1)
f=Right(jf,1)
Else
j=0
f=jf
EndIf
Ifj<>0Andf<>0Then’角分位都有時
jf=Application.WorksheetFunction.Text(j,"[DBNum2]")&"角"_
&Application.WorksheetFunction.Text(f,"[DBNum2]")&"分"
Else
’處理出現零幾分的情況
IfInt(value)=0Andj=0Andf<>0Then
jf=Application.WorksheetFunction.Text(f,"[DBNum2]")&"分"
Else
Ifj=0Then’有分無角時
jf="零"&Application.WorksheetFunction.Text(f,"[DBNum2]")&"分"
Else
Iff=0Then’有角無分時
jf=Application.WorksheetFunction.Text(j,"[DBNum2]")&"角整"
EndIf
EndIf
EndIf
EndIf
strrmbdx=strrmbdx&jf’組裝
Else
strrmbdx=strrmbdx&"整"
EndIf
rmbdx=a&strrmbdx’最後成型了,各位MM滿意了吧
EndIf
EndIf
EndFunction