excel人民币人民币金额大写转换器问题!

excel五种人民币大写转换
此答案由站在风中的女子提供
我们需要用到以下五种函数就可以了。按【Alt+F11】打开VBA窗口,想要哪一种效果就插入那一种代码,然后启动就可以啦。
3NUMBERSTRING函数
=IF(A2=0,&零&,IF(AND(A20.09,A2*10-INT(A2*10)=0), _NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角 _整&,IF(AND(A20.09,A2*10-INT(A2*10)&&0), _NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)& _&角&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,IF(A21),NUMBERSTRING(INT(A2),2)&&元&&NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角整&,)))))&IF(A20,INT(A2*10)-INT(A2)*10&0,A2&1),NUMBERSTRING(INT(A2),2)&&元&&NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,IF(AND(A2-INT(A2*10)/10&0,INT(A2*10)-INT(A2)*10=0,A2&1),NUMBERSTRING(INT(A2),2)&&元&&&零&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,&&))))
4TEXT函数及[dbnum2]格式
??=IF(ROUND(A2,2)<0,"无效数值",IF(ROUND(A2,2)=0,"零",IF(ROUND(A2,2)<1,"",TEXT(INT(ROUND(A2,2)),"[dbnum2]")&"元")&IF(INT(ROUND(A2,2)*10)-INT(ROUND(A2,2))*10=0,IF(INT(ROUND(A2,2))*(INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(A2,2)*10)-INT(ROUND(A2,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10)=0,"整",TEXT((INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10),"[dbnum2]")&"分")))SUBSTITUTE、TEXT函数及[dbnum2]格式 =SUBSTITUTE(SUBSTITUTE(IF(A2<0,"负","")&TEXT(TRUNC(ABS(ROUND(A2,2))),"[DBNum2]")&"元"&IF(ISERR(FIND(".",ROUND(A2,2))),"",TEXT(RIGHT(TRUNC(ROUND(A2,2)*10)),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(A2,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(A2,2),3))=".",TEXT(RIGHT(ROUND(A2,2)),"[DBNum2]")&"分",IF(ROUND(A2,2)=0,"","整")),"零元零",""),"零元","零")??
5rmbdx自定义函数
用法: =rmbdx(A2)Function rmbdx(value, Optional m = 0)&#39;支持负数,支持小数点后的第三位数是否进行四舍五入处理&#39;默认参数为0,即不将小数点后的第三位数进行四舍五入处理&#39;--On Error Resume NextDim aDim jf As String & &#39;定义角分位Dim j &#39;定义角位Dim f &#39;定义分位If value & 0 Then &#39;处理正负数的情况a = &负&Elsea = &&End IfIf IsNumeric(value) = False Then &#39;判断待转换的value是否为数值rmbdx = &需转换的内容非数值&Elsevalue = Abs(CCur(value))&#39;当参数m不输入(默认为0)或为0时,小数点后的第三数不进行四舍五入处理&#39;当参数m为1或其它数值时,小数点后的第三数进行四舍五入处理If m = 0 Then& &jf = Fix((value - Fix(value)) * 100)& &value = Fix(value) + jf / 100& &Else &#39;厘位进行四舍五入实践很少用到,但还是要照顾到& & &value = Application.WorksheetFunction.Round(value, 2) &#39;--&这句最关键!只用round有bug& & &jf = Round((value - Fix(value)) * 100, 0)End IfIf value = 0 Or value = && Then &#39;当待转换数值为0或空时,不进行转换rmbdx = &&Elsestrrmbdx = Application.WorksheetFunction.Text(Int(value), &[DBNum2]&) & &元& &#39;
6转换整数位
If Int(value) = 0 Then
strrmbdx = ""
End IfIf Int(value)
value Then
If jf > 9 Then '判断小数位
j = Left(jf, 1)
f = Right(jf, 1)
0 Then '角分位都有时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角" _
& Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
'处理出现零几分的情况
If Int(value) = 0 And j = 0 And f
jf = Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
If j = 0 Then '有分无角时
jf = "零" & Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
If f = 0 Then '有角无分时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角整"
strrmbdx = strrmbdx & jf '组装Else
strrmbdx = strrmbdx & "整"End Ifrmbdx = a & strrmbdx '最后成型了,各位MM满意了吧End IfEnd IfEnd Function??
7dx自定义函数
用法: =dx(A2)&Function DX(n)& & DX = Replace(Application.Text(Round(n + 0.), &[DBnum2]&), &.&, &元&)& & DX = IIf(Left(Right(DX, 3), 1) = &元&, Left(DX, Len(DX) - 1) & &角& & Right(DX, 1) & &分&, IIf(Left(Right(DX, 2), 1) = &元&, DX & &角整&, IIf(DX = &零&, &&, DX & &元整&)))& & DX = Replace(Replace(Replace(Replace(DX, &零元零角&, &&), &零元&, &&), &零角&, &零&), &-&, &负&)& End Function
此答案由站在风中的女子提供
我们需要用到以下五种函数就可以了。按【Alt+F11】打开VBA窗口,想要哪一种效果就插入那一种代码,然后启动就可以啦。
3NUMBERSTRING函数
=IF(A2=0,&零&,IF(AND(A20.09,A2*10-INT(A2*10)=0), _NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角 _整&,IF(AND(A20.09,A2*10-INT(A2*10)&&0), _NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)& _&角&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,IF(A21),NUMBERSTRING(INT(A2),2)&&元&&NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角整&,)))))&IF(A20,INT(A2*10)-INT(A2)*10&0,A2&1),NUMBERSTRING(INT(A2),2)&&元&&NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,IF(AND(A2-INT(A2*10)/10&0,INT(A2*10)-INT(A2)*10=0,A2&1),NUMBERSTRING(INT(A2),2)&&元&&&零&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,&&))))
4TEXT函数及[dbnum2]格式
??=IF(ROUND(A2,2)<0,"无效数值",IF(ROUND(A2,2)=0,"零",IF(ROUND(A2,2)<1,"",TEXT(INT(ROUND(A2,2)),"[dbnum2]")&"元")&IF(INT(ROUND(A2,2)*10)-INT(ROUND(A2,2))*10=0,IF(INT(ROUND(A2,2))*(INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(A2,2)*10)-INT(ROUND(A2,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10)=0,"整",TEXT((INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10),"[dbnum2]")&"分")))SUBSTITUTE、TEXT函数及[dbnum2]格式 =SUBSTITUTE(SUBSTITUTE(IF(A2<0,"负","")&TEXT(TRUNC(ABS(ROUND(A2,2))),"[DBNum2]")&"元"&IF(ISERR(FIND(".",ROUND(A2,2))),"",TEXT(RIGHT(TRUNC(ROUND(A2,2)*10)),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(A2,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(A2,2),3))=".",TEXT(RIGHT(ROUND(A2,2)),"[DBNum2]")&"分",IF(ROUND(A2,2)=0,"","整")),"零元零",""),"零元","零")??
5rmbdx自定义函数
用法: =rmbdx(A2)Function rmbdx(value, Optional m = 0)&#39;支持负数,支持小数点后的第三位数是否进行四舍五入处理&#39;默认参数为0,即不将小数点后的第三位数进行四舍五入处理&#39;--On Error Resume NextDim aDim jf As String & &#39;定义角分位Dim j &#39;定义角位Dim f &#39;定义分位If value & 0 Then &#39;处理正负数的情况a = &负&Elsea = &&End IfIf IsNumeric(value) = False Then &#39;判断待转换的value是否为数值rmbdx = &需转换的内容非数值&Elsevalue = Abs(CCur(value))&#39;当参数m不输入(默认为0)或为0时,小数点后的第三数不进行四舍五入处理&#39;当参数m为1或其它数值时,小数点后的第三数进行四舍五入处理If m = 0 Then& &jf = Fix((value - Fix(value)) * 100)& &value = Fix(value) + jf / 100& &Else &#39;厘位进行四舍五入实践很少用到,但还是要照顾到& & &value = Application.WorksheetFunction.Round(value, 2) &#39;--&这句最关键!只用round有bug& & &jf = Round((value - Fix(value)) * 100, 0)End IfIf value = 0 Or value = && Then &#39;当待转换数值为0或空时,不进行转换rmbdx = &&Elsestrrmbdx = Application.WorksheetFunction.Text(Int(value), &[DBNum2]&) & &元& &#39;
6转换整数位
If Int(value) = 0 Then
strrmbdx = ""
End IfIf Int(value)
value Then
If jf > 9 Then '判断小数位
j = Left(jf, 1)
f = Right(jf, 1)
0 Then '角分位都有时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角" _
& Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
'处理出现零几分的情况
If Int(value) = 0 And j = 0 And f
jf = Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
If j = 0 Then '有分无角时
jf = "零" & Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
If f = 0 Then '有角无分时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角整"
strrmbdx = strrmbdx & jf '组装Else
strrmbdx = strrmbdx & "整"End Ifrmbdx = a & strrmbdx '最后成型了,各位MM满意了吧End IfEnd IfEnd Function??
7dx自定义函数
用法: =dx(A2)&Function DX(n)& & DX = Replace(Application.Text(Round(n + 0.), &[DBnum2]&), &.&, &元&)& & DX = IIf(Left(Right(DX, 3), 1) = &元&, Left(DX, Len(DX) - 1) & &角& & Right(DX, 1) & &分&, IIf(Left(Right(DX, 2), 1) = &元&, DX & &角整&, IIf(DX = &零&, &&, DX & &元整&)))& & DX = Replace(Replace(Replace(Replace(DX, &零元零角&, &&), &零元&, &&), &零角&, &零&), &-&, &负&)& End Function
此答案由站在风中的女子提供
我们需要用到以下五种函数就可以了。按【Alt+F11】打开VBA窗口,想要哪一种效果就插入那一种代码,然后启动就可以啦。
3NUMBERSTRING函数
=IF(A2=0,&零&,IF(AND(A20.09,A2*10-INT(A2*10)=0), _NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角 _整&,IF(AND(A20.09,A2*10-INT(A2*10)&&0), _NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)& _&角&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,IF(A21),NUMBERSTRING(INT(A2),2)&&元&&NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角整&,)))))&IF(A20,INT(A2*10)-INT(A2)*10&0,A2&1),NUMBERSTRING(INT(A2),2)&&元&&NUMBERSTRING((INT(A2*10)/10-INT(A2))*10,2)&&角&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,IF(AND(A2-INT(A2*10)/10&0,INT(A2*10)-INT(A2)*10=0,A2&1),NUMBERSTRING(INT(A2),2)&&元&&&零&&NUMBERSTRING((INT(A2*100)/100-INT(A2*10)/10)*100,2)&&分&,&&))))
4TEXT函数及[dbnum2]格式
??=IF(ROUND(A2,2)<0,"无效数值",IF(ROUND(A2,2)=0,"零",IF(ROUND(A2,2)<1,"",TEXT(INT(ROUND(A2,2)),"[dbnum2]")&"元")&IF(INT(ROUND(A2,2)*10)-INT(ROUND(A2,2))*10=0,IF(INT(ROUND(A2,2))*(INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(A2,2)*10)-INT(ROUND(A2,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10)=0,"整",TEXT((INT(ROUND(A2,2)*100)-INT(ROUND(A2,2)*10)*10),"[dbnum2]")&"分")))SUBSTITUTE、TEXT函数及[dbnum2]格式 =SUBSTITUTE(SUBSTITUTE(IF(A2<0,"负","")&TEXT(TRUNC(ABS(ROUND(A2,2))),"[DBNum2]")&"元"&IF(ISERR(FIND(".",ROUND(A2,2))),"",TEXT(RIGHT(TRUNC(ROUND(A2,2)*10)),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(A2,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(A2,2),3))=".",TEXT(RIGHT(ROUND(A2,2)),"[DBNum2]")&"分",IF(ROUND(A2,2)=0,"","整")),"零元零",""),"零元","零")??
5rmbdx自定义函数
用法: =rmbdx(A2)Function rmbdx(value, Optional m = 0)&#39;支持负数,支持小数点后的第三位数是否进行四舍五入处理&#39;默认参数为0,即不将小数点后的第三位数进行四舍五入处理&#39;--On Error Resume NextDim aDim jf As String & &#39;定义角分位Dim j &#39;定义角位Dim f &#39;定义分位If value & 0 Then &#39;处理正负数的情况a = &负&Elsea = &&End IfIf IsNumeric(value) = False Then &#39;判断待转换的value是否为数值rmbdx = &需转换的内容非数值&Elsevalue = Abs(CCur(value))&#39;当参数m不输入(默认为0)或为0时,小数点后的第三数不进行四舍五入处理&#39;当参数m为1或其它数值时,小数点后的第三数进行四舍五入处理If m = 0 Then& &jf = Fix((value - Fix(value)) * 100)& &value = Fix(value) + jf / 100& &Else &#39;厘位进行四舍五入实践很少用到,但还是要照顾到& & &value = Application.WorksheetFunction.Round(value, 2) &#39;--&这句最关键!只用round有bug& & &jf = Round((value - Fix(value)) * 100, 0)End IfIf value = 0 Or value = && Then &#39;当待转换数值为0或空时,不进行转换rmbdx = &&Elsestrrmbdx = Application.WorksheetFunction.Text(Int(value), &[DBNum2]&) & &元& &#39;
6转换整数位
If Int(value) = 0 Then
strrmbdx = ""
End IfIf Int(value)
value Then
If jf > 9 Then '判断小数位
j = Left(jf, 1)
f = Right(jf, 1)
0 Then '角分位都有时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角" _
& Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
'处理出现零几分的情况
If Int(value) = 0 And j = 0 And f
jf = Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
If j = 0 Then '有分无角时
jf = "零" & Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
If f = 0 Then '有角无分时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角整"
strrmbdx = strrmbdx & jf '组装Else
strrmbdx = strrmbdx & "整"End Ifrmbdx = a & strrmbdx '最后成型了,各位MM满意了吧End IfEnd IfEnd Function??
7dx自定义函数
用法: =dx(A2)&Function DX(n)& & DX = Replace(Application.Text(Round(n + 0.), &[DBnum2]&), &.&, &元&)& & DX = IIf(Left(Right(DX, 3), 1) = &元&, Left(DX, Len(DX) - 1) & &角& & Right(DX, 1) & &分&, IIf(Left(Right(DX, 2), 1) = &元&, DX & &角整&, IIf(DX = &零&, &&, DX & &元整&)))& & DX = Replace(Replace(Replace(Replace(DX, &零元零角&, &&), &零元&, &&), &零角&, &零&), &-&, &负&)& End Function
对“关于SQL外连接的解释”纠错
关注希赛微信
接听时间:工作日00:00-24:00(仅收市话费)
&&|&&关于希赛&&|&&工作机会&&|&&服务协议&&|&&免责声明&&|&&联系希赛&&|&&网站地图&&&&&&&&希赛网&&版权所有&&(C)&&&&&&Excel(1)
=&人民币&&IF(ISERROR(FIND(&.&,A1)),NUMBERSTRING(INT(A1),2)&&元整&,IF(ISERROR(NUMBERSTRING(MID(A1,FIND(&.&,A1)+2,1),2)),NUMBERSTRING(INT(A1),2)&&元&&NUMBERSTRING(MID(A1,FIND(&.&,A1)+1,1),2)&&角整&,NUMBERSTRING(INT(A1),2)&&元&&NUMBERSTRING(MID(A1,FIND(&.&,A1)+1,1),2)&&角&&NUMBERSTRING(MID(A1,FIND(&.&,A1)+2,1),2)&&分&))
将公式A1替换成指定单元&#26684;即可
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:237712次
积分:3027
积分:3027
排名:第9356名
原创:70篇
转载:17篇
(1)(1)(1)(1)(1)(1)(6)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1)(4)(1)(3)(2)(4)(1)(1)(1)(1)(3)(1)(15)(5)(7)(6)(2)(1)(1)(1)(1)(3)excel&2007&自动将小写金额转换成大写金额的方法
,在公司经常需要写资金申请单,在最后金额总计处总会涉及人民币大小写的选项,有的时候非常忙,经常搞的焦头烂额的,改了小写的金额,忘了改大写的金额,找领导签字时被领导一顿K是难免的.怎么办呢,其实很简单只要一个函数或者是财务人员excel功夫了得,在涉及表格的时候就该为我们设计好贴心的申请表格.没办法,我们公司的财务表格使用的不是很好.自己来解决吧.
& 首先根据公司资金申请表的形式做了如下修改.
实现每次当想填写资金申请表时都显示当前的时间,这个在网上搜索了下,只要在要显示日期的位置加入一个函数即可&&
=TODAY()&&&&
,但是这样显示的是2013/*/*,不合适,还需手工将短日期格式改成长日期格式.
2&&& 对于人民币大小写
一直是个头痛的问题,在excelhome找到了一个自定义函数可以实现自动转换的功能,跟大家一起分享下.
具体代码如下:
Function N2RMB(M)
&& N2RMB =
Replace(Application.Text(Round(M + 0.), "[DBnum2]"),
".", "元")
&& N2RMB = IIf(Left(Right(N2RMB,
3), 1) = "元", Left(N2RMB, Len(N2RMB) - 1) & "角"
& Right(N2RMB, 1) & "分",
IIf(Left(Right(N2RMB, 2), 1) = "元", N2RMB & "角整",
IIf(N2RMB = "零", "", N2RMB & "元整")))
N2RMB = Replace(Replace(Replace(Replace(N2RMB, "零元零角", ""), "零元",
""), "零角", "零"), "-", "负")
End Function
将以上代码添加到自定义函数,然后在要转换的大小写单元格& 直接调用函数
N2RMB即可实现大小写的自动转换.
=N2RMB(单元格).
插入数据并调用函数
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。求教数字转化成人民币大写怎样不会少“零”_excel吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:135,403贴子:
求教数字转化成人民币大写怎样不会少“零”收藏
假如单元格A2=在B1单元格写入公式:=SUBSTITUTE(SUBSTITUTE(IF(-RMB(A2),TEXT(A2,";负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2),2),"[dbnum2]0角0分;;整"),),"零角",IF(A2&1,,"零")),"零分","整")复制代码或者这样写:=IF(ROUND(A2,2)&0,"无效数值",""&IF(ROUND(A2,2)=0,"零元",IF(ROUND (A1,2)&1,"",TEXT(INT(ROUND(A2,2)),"[dbnum2]")&"元")&IF(INT (ROUND(A2,2)*10)-INT(ROUND(A2,2))*10=0,IF(INT(ROUND(A2,2))*(INT(ROUND(A2,2) *100)-INT(ROUND(A2,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(A2,2)*10)-INT (ROUND(A2,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(A2,2)*100)-INT (ROUND(A2,2)*10)*10)=0,"整",TEXT((INT(ROUND(A2,2)*100)-INT(ROUND(A2,2) *10)*10),"[dbnum2]")&"分"))) 复制代码这样显示为:贰拾万伍仟元贰角整但是应该为:贰拾万零伍仟元贰角整这怎么办
好的话剧,坚决不能错过,价格也很重要!
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(-RMB(A2,2),TEXT(A2,";负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),),"零角",IF(A2^2&1,,"零")),"万",IF(AND(MOD(ABS(A2%),,MOD(ABS(A2%),1000)&=10),"万零","万")),"零分","整")PS:非自创,百度来的
=SUBSTITUTE(SUBSTITUTE(TEXT(TRUNC(FIXED(A1)),"[dbnum2]G/通用格式元;负[dbnum2]G/通用格式元;"&IF(A1&-0.5%,,"负"))&TEXT(RIGHT(FIXED(A1),2),"[dbnum2]0角0分;;"&IF(ABS(A1)&1%,"整",)),"零角",IF(ABS(A1)&1,,"零")),"零分","整")抄自eh,eh说是从吧里抄过去的。。好吧,这个e吧肯定和eh基情满满
(三)阿拉伯金额数字万位或元位是"0",或者数字中间连续有几个"0",万位、元位也是"0",但千位、角位不是"0"时,中文大写金额中可以只写一个零字,也可以不写"零"字。如¥1,680.32,应写成人民币壹仟陆佰捌拾元零叁角贰分,或者写成人民币壹仟陆佰捌拾元叁角贰分;又如¥107,000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分
“贰拾万零伍仟元贰角整”,这个读法就是错的!12500读着一万二千五百,不是一万零二千五百!
=SUBSTITUTE(SUBSTITUTE(IF(-RMB(A2,2),TEXT(A2,";(负)")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2,2),2),"[&9][dbnum2]"&IF(MOD(ABS(A2),10)&1,0,)&"0角0分;"&IF(A2^2&1,,0)&"[&][dbnum2]0分;整"),),"万",IF((MOD(ABS(A2%%),10)&1)*(MOD(ABS(A2%%),10)&=0.1),"万零","万")),"零分","整")
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或:转载时请以超链接形式标明文章原始出处和作者信息及本声明
阿拉伯数字大写【原创】Microsoft Excel单元格中阿拉伯数字转换成人民币大写的方法
  重要提醒:系统检测到您的帐号可能存在被盗风险,请尽快查看风险提示,并立即修改密码。
关闭   网易博客安全提醒:系统检测到您当前密码的安全性较低,为了您的账号安全,建议您适时修改密码
关闭   【原创】Microsoft Excel单元格中阿拉伯数字转换成人民币大写的方法
   17:03:07|
分类: 科技|
标签:|字号大中小 订阅
使用过Microsoft Excel电子表的人(尤其是财务人员),经常会遇到将阿拉伯数字转换成人民币大写的问题,如:在D25单元格中有自动求和后的一串阿拉伯数字“”元,需要在A25单元格中自动转换为“人民币大写:柒拾捌万玖仟肆佰伍拾陆元陆角伍分”,如果用手动去填写也未尝不可,但是,只要D25的数字一变,就得重新填写一次,非常麻烦,尤其是在进行财务报表应用时,就更不方便,如果能自动转换,就会方便得多。   说到这,有的人可能会说:这还不方便?使用单元格格式设置功能,将A25单元格的格式设置成“特殊”格式中的“中文大写数字”不就得了,何必这么复杂呢?   其实,对于这一功能我们可能都使用过,其结果会怎样呢?大家都知道,在Microsoft Excel中,仅仅使用格式设置的方法是不能达到目的的!譬如:将阿拉伯数字“”通过格式设置的方法,其结果只能得到“柒拾捌万玖仟肆佰伍拾陆点陆伍”,而不是“柒拾捌万玖仟肆佰伍拾陆元陆角伍分”。这是因为,在Microsoft Excel中没有一个单一的函数能完成这样复杂的运算,必须使用多个函数进行条件运算才能实现。   如何才能实现这样复杂的函数运算呢?   我这里有一组条件运算的方法,这一组条件运算的方法,是基于G19单元格中阿拉伯数字值进行自动转换的,将这一组条件运算函数写到哪个单元格,这个单元格就会自动将G19中的阿拉伯数字转换成人民币大写数值,不信?您试试?   我们将G19单元格确定为数据汇总后的人民币小写数值(即阿拉伯数字),需要在B19单元格中自动转换成人民币大写数值,那么,请选定B19单元格,将下面的多个函数条件运算语句写入并按回车键,看看结果会怎样?   ="人民币大写: "&IF((G19-INT(G19))=0,TEXT(G19,"[DBNUM2]")&"元整",IF(INT(G19*10)-G19*10=0,TEXT(INT(G19),"[DBNUM2]" )&"元"&TEXT((INT(G19*10)-INT(G19)*10),"[DBNUM2]")&"角整",TEXT(INT(G19),"[DBNUM2]")&"元"&IF(INT(G19*10)-INT(G19)*10=0,"零",TEXT(INT(G19*10)-INT(G19)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"))   结果很明显,完全正确地实现了人民币大写转换!说到这,应该大功告成了。但是,大家可能会说:这一串函数运算是怎么回事?看不懂。是的,对于初学者来说,可能是很复杂也根本看不懂,那么,我就再哆嗦几句,给大家再讲一讲其运算的思路和方法吧。   要弄明白,还得讲清楚两个方面的问题:   第一方面:对于单元格中的人民币数值而言,有四种可能性出现:   即:整数(精确到元);1位小数(精确到角);2位小数(精确到分),中间出现零。因此,就有四种判断,是整数还是小数?是1位小数还是2位小数?中间是否出现零?   从上面的运算过程中可以看出,IF((G19-INT(G19))=0,TEXT(G19,"[DBNUM2]")&"元整"为整数时的条件运算方法,IF(INT(G19*10)-G19*10=0,TEXT(INT(G19),"[DBNUM2]")& "元"&TEXT((INT(G19*10)-INT(G19)*10),"[DBNUM2]")&"角整"为1位小数时的条件运算方法,而TEXT(INT(G19*10)-INT(G19)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"))则是有2位小数的条件运算方法,对于中间出现零,则用IF(INT(G19*10)-INT(G19)*10=0,"零"来进行运算。   第二方面:对于函数而言,我们必须弄明白以下几个函数的意义和语句格式。   1、条件判断函数IF:执行真假值判断,根据逻辑计算的真假值,返回不同结果。   可以使用函数 IF 对数值和公式进行条件检测。   语法   IF(logical_test,value_if_true,value_if_false)   Logical_test
表示计算结果为 TRUE 或 FALSE 的任意值或表达式。例如,A10=100 就是一个逻辑表达式,如果单元格 A10 中的值等于 100,表达式即为 TRUE,否则为 FALSE。本参数可使用任何比较运算符。   Value_if_true
logical_test 为 TRUE 时返回的值。例如,如果本参数为文本字符串“预算内”而且 logical_test 参数值为 TRUE,则 IF 函数将显示文本“预算内”。如果 logical_test 为 TRUE 而 value_if_true 为空,则本参数返回 0(零)。如果要显示 TRUE,则请为本参数使用逻辑值 TRUE。Value_if_true 也可以是其他公式。   Value_if_false
logical_test 为 FALSE 时返回的值。例如,如果本参数为文本字符串“超出预算”而且 logical_test 参数值为 FALSE,则 IF 函数将显示文本“超出预算”。如果 logical_test 为 FALSE 且忽略了 Value_if_false(即 value_if_true 后没有逗号),则会返回逻辑值 FALSE。如果 logical_test 为 FALSE 且 Value_if_false 为空(即 value_if_true 后有逗号,并紧跟着右括号),则本参数返回 0(零)。Value_if_false 也可以是其他公式。   2、向下舍取整数函数INT:这个函数的功能是将数字向下舍入到最接近的整数。   语法   INT(number)   Number
需要进行向下舍入取整的实数。   3、数值文本转换函数TEXT:将数值转换为按指定数字格式表示的文本。   语法   TEXT(value,format_text)   Value
为数值、计算结果为数字值的公式,或对包含数字值的单元格的引用。   Format_text
为“单元格格式”对话框中“数字”选项卡上“分类”框中的文本形式的数字格式。   4、返回字符串中最后1个或多个字符函数RIGHT:根据所指定的字符数返回文本字符串中最后一个或多个字符。   语法   RIGHT(text,num_chars)   Text
是包含要提取字符的文本字符串。   Num_chars
指定希望 RIGHT 提取的字符数。
  5、文本运算符&:将两个文本值连接或串起来产生一个连续的文本值。   6、格式命令DBNUM2:将该单元格或字符串的格式设置为“特殊”格式中的“中文大写数字”格式。   讲清了可能出现的四种情况和几个运算函数,现在,再来谈谈条件运算的思路。要完全正确地进行人民币大写转换,就必须应用以上的条件判断通过函数运算来实现。   首先,要在字符串前面加上“人民币大写:”的中文字,并与后面的大写字符串连接起来,形成一个完整的书写格式,就必须应用文本运算符“&”,因此,语句开头必须写“="人民币大写: "&”,使它与后面的字符串连接起来,后面的“元”、“角”、“分”、“整”等均应用这个方法来实现。   第二,针对可能出现整数(即精确到元)的情况,需要判断是否为整数。应用“IF((G19-INT(G19))=0,TEXT(G19,"[DBNUM2]")&"元整"”语句进行条件判断和函数运算,如果G19单元格中的数值减去该单元格数值向下舍取整数后为0,则表明该数值为整数,那么,直接将该数值的格式设置为“特殊”格式中的“中文大写数字”格式,并在后面加上“元整”字符串,如果不是,则进行下面的判断。   第三,针对可能出现1位小数(即精确到角)的情况,需要继续进行判断其是否为1位小数。应用“IF(INT(G19*10)-G19*10=0,TEXT(INT(G19),"[DBNUM2]")& "元"&TEXT((INT(G19*10)-INT(G19)*10),"[DBNUM2]")&"角整"”语句进行条件判断和函数运算,如果该数值为1位小数,则该数值乘以10后向下舍取整数的值应与该数值直接乘以10的值相等,即INT(G19*10)-G19*10=0,当INT(G19*10)-G19*10=0时,说明条件为真,否则,进行下面的函数运算。   第四,针对可能出现2位小数(即精确到分)的情况,应用“TEXT(INT(G19*10)-INT(G19)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"”的语句进行函数运算,其原理与上述基本相同,不同之处是这里应用了返回文本字符串中最后一个或多个字符“RIGHT”。通过TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"语句完成最后1位数值(即分)的转换。   第五,针对中间可能出现零的情况,需要应用“IF(INT(G19*10)-INT(G19)*10=0,"零"”语句来进行运算。   通过以上五种条件判断和函数运算,就可以正确地进行人民币大写数字转换了。   本人也是初学者,也是通过查阅了很多资料后才对此方法有一点理解并能进行函数运算的,希望我的这点体会能对您的工作有所帮助,如有不正确的地方,还请谅解并提出宝贵意见为盼!
历史上的今天:}

我要回帖

更多关于 excel人民币大写转换 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信