永发信息网

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

答案:6  悬赏:50  手机版
解决时间 2021-01-27 12:46
我在网上下了几个函数,结果都一样,我在设置票据打印,问题是如果万位上是0 ,这个“零”就显示不出来了,例如404,400元,显示为肆拾万肆仟四百元整,建行不认,必须显示肆拾肆万零肆仟肆佰元整。
其他位的0又是正常的,那个高手帮我编一个啊,或者帮我改改我下的这几个公式

=IF(B9<=0,,TEXT(INT(B9),"[dbnum2]人民币G/通用格式")&"元"&IF(INT(B9*10)-INT(B9)*10=0,IF(INT(B9)*(INT(B9*100)-INT(B9*10)*10)=0,"","零"),TEXT(INT(B9*10)-INT(B9)*10,"[dbnum2]")&"角")&IF((INT(B9*100)-INT(B9*10)*10)=0,"整",TEXT((INT(B9*100)-INT(B9*10)*10),"[dbnum2]")&"分"))

=IF(B9<=0,,TEXT(INT(B9),"[dbnum2]G/通用格式")&"元"&IF(INT(B9*10)-INT(B9)*10=0,IF(INT(B9)*(INT(B9*100)-INT(B9*10)*10)=0,"","零"),TEXT(INT(B9*10)-INT(B9)*10,"[dbnum2]")&"角")&IF((INT(B9*100)-INT(B9*10)*10)=0,"整",TEXT((INT(B9*100)-INT(B9*10)*10),"[dbnum2]")&"分"))

=IF(ROUND(B9,2)=0,"",IF(ROUND(ABS(B9),2)>=1,TEXT(INT(ROUND(ABS(B9),2)),"[DBNum2]")&"元","")&IF(RIGHt(TEXT(B9,".00"),2)*1=0,"整",IF(RIGHt(TEXT(B9,".00"),4)*1>=1,IF(RIGHt(TEXT(B9,".00"),2)*1>9,"","零"),IF(ROUND(ABS(B9),2)>=1,"零",""))&IF(RIGHt(TEXT(B9,".00"),2)*1>9,TEXT(LEFt(RIGHt(TEXT(B9,".00"),2)),"[DBNum2]")&"角","")&IF(RIGHt(TEXT(B9,".00"))*1>0,TEXT(RIGHt(TEXT(B9,".00")),"[DBNum2]")&"分","整")))
现在急待解决的就是万位上的"零"不出来的问题
最佳答案
我给你一个方法将此复制下来粘贴到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
全部回答
支持vip_shine 请按他的步骤试试看呀
设a1列为数据列,则在a2输入以下公式(可复制): 

=if(a1<0,"负","")&if(abs(a1)>1,text(trunc(abs(round(a1,2))),"[dbnum2]")&"元","")&if(iserr(find(".",round(a1,2))),"",text(right(trunc(round(a1,2)*10)),"[dbnum2]"))&if(iserr(find(".0",text(a1,"0.00"))),"角","")&if(left(right(round(a1,2),3))=".",text(right(round(a1,2)),"[dbnum2]")&"分","整")
不需要函数,只需要把单元格格式设置为:特殊-中文大写数字
excel中人民币小写转大写的函数这样写: 第1步 在Excel工作表中输入相关数据,并在A列中输入一些具有代表性的人民币小写数据用来测试函数的功能, 第2步 在B2单元格中输入公式"=IF(ABS(A2)<0.005,"",IF(A2<0,"负",)& IF(INT(ABS(A2)),TEXT(INT(ABS(A2)),"[dbnum2]")&" 元",)&IF(INT(ABS(A2)*10)-INT(ABS(A2))*10,TEXT(INT(ABS(A2)*10)- INT(ABS(A2))*10,"[dbnum2]")&"角",IF(INT(ABS(A2))=ABS(A2),,IF(ABS(A2)& lt;0.1,,"零")))&IF(ROUND(ABS(A2)*100- INT(ABS(A2)*10)*10,),TEXT(ROUND(ABS(A2)*100-INT(ABS(A2)*10)*10,)," [dbnum2]")&"分","整"))"。 第3步 仔细检查公式输入无误后,按回车键即可将A2单元格中人民币小写金额转换为人民币大写金额 第4步 拖动B2单元格中的填充柄将公式复制到以下相关的单元格中,即可将A列中数字转换为人民币大写,
楼上所有答案, 均不如楼主的第一条公式,而且答非所问。 如用一条公式去解决 万位是0 显示 零 的问题, 公式会比原来的长三倍, 太吓人了。故建议用辅助格, 方法是: 将原有公式放在辅助格, 假设是C9, C9会显示 人民币肆拾万肆仟四百元整 再在需要显示大写的单元格, 输入下列公式: =IF(AND(ISERROR(FIND("拾万",C9))=FALSE,ISERROR(FIND("拾万零",C9)=TRUE)),SUBSTITUTE(C9,"拾万","拾万零"),C9) 便会显示 人民币肆拾万零肆仟四百元整 注意: 1.)设定公式后, 需将C9设定成白色, 以免被打印出来 2.)上述办法并未考虑百万位加零, 即 1,002,000 如有需要, 公式要添加一些内容
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
旭日中空玻璃地址在什么地方,我要处理点事
win10 admin用户为什么还老出现目标文件夹访
20年遗像怎么处理
鬡鬇的意思是什么啊?知道的请说下!
野花香酒吧地址好找么,我有些事要过去
我嗓子疼连带耳朵疼及头皮疼是怎么回事?
小孩划了别人的车一点点,需要负全部责任吗
本田幻影150 本田VTR250 GW250 怎么选择?
提示"由于控件不能创建不能退出设计模式"怎么
小学学英语时的小趣事
席苫的意思是什么啊?知道的请说下!
dnf狂战要不要学基础精通?
求一部动漫名字,里面有个叫Mr.x的女生,假扮
记忆婚纱摄影主题酒吧地址有知道的么?有点事
有一部动漫,里面有一个男主角,两个女主角,
推荐资讯
怎样才算唱歌好听。
驾驶证a1a2怎样申请
Win7旗舰版系统怎么使用Tablet PC输入面板手
旷工两天,用人单位对我予以400元罚款处理,
用adobe audition 3.0录完歌之后怎么保存啊?
求教各位大神:爱HIFI音响商城网的音响怎么样
中石油乌达公交加油站地址在什么地方,我要处
狗狗死后身上盖着人的衣服好吗
空调散发酸臭味是漏氟了吗
童悦小饭桌(辽阳白塔区)地址在什么地方,想过
新闻两则至发电时止为什么不用到目前为止
从前有一位老人(数学题详情见补充)从前有一
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?