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

我在网上下了几个函数,结果都一样,我在设置票据打印,问题是如果万位上是0,这个“零”就显示不出来了,例如404,400元,显示为肆拾万肆仟四百元整,建行不认,必须显示肆拾... 我在网上下了几个函数,结果都一样,我在设置票据打印,问题是如果万位上是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]")&"分","整")))
现在急待解决的就是万位上的"零"不出来的问题
展开
 我来答
vip_shine
2007-06-21 · TA获得超过109个赞
知道答主
回答量:35
采纳率:0%
帮助的人:43.3万
展开全部
我给你一个方法将此复制下来粘贴到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
淡然还乖巧的便当9253
2015-09-23 · 知道合伙人教育行家
淡然还乖巧的便当9253
知道合伙人教育行家
采纳数:72961 获赞数:421139
中交三航局江苏分公司工程师

向TA提问 私信TA
展开全部
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列中数字转换为人民币大写,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友00a5073
2007-06-21 · TA获得超过7309个赞
知道大有可为答主
回答量:9092
采纳率:25%
帮助的人:9286万
展开全部
不需要函数,只需要把单元格格式设置为:特殊-中文大写数字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
klndicky
2007-06-21 · TA获得超过666个赞
知道小有建树答主
回答量:381
采纳率:100%
帮助的人:0
展开全部
楼上所有答案, 均不如楼主的第一条公式,而且答非所问。

如用一条公式去解决 万位是0 显示 零 的问题, 公式会比原来的长三倍, 太吓人了。故建议用辅助格, 方法是:
将原有公式放在辅助格, 假设是C9,
C9会显示 人民币肆拾万肆仟四百元整
再在需要显示大写的单元格, 输入下列公式:
=IF(AND(ISERROR(FIND("拾万",C9))=FALSE,ISERROR(FIND("拾万零",C9)=TRUE)),SUBSTITUTE(C9,"拾万","拾万零"),C9)
便会显示 人民币肆拾万零肆仟四百元整

注意:
1.)设定公式后, 需将C9设定成白色, 以免被打印出来
2.)上述办法并未考虑百万位加零, 即 1,002,000 如有需要, 公式要添加一些内容
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czx016
2007-06-21 · TA获得超过329个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:0
展开全部
支持vip_shine

请按他的步骤试试看呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式