excel中人民币小写转大写的函数怎么写?

2020-09-26 科技 184阅读
我给你一个方法将此复制下来粘贴到Excel单元格内就可以了。
=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
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com