Excel自动转换人民币金额大写

LMS
3.8K+ 16

方法一

Excel自身带有转换阿拉伯数字到汉字数字大写的功能,当输入数字后右键选择设置单元格格式,在数字选项卡分类下选择倒数第二个特殊分类,右边类型下选择中文大写数字,即可自动将数字转换成大写格式,如下图:

不过上面的方法有两个缺陷是:转换后的数字大写格式不符合银行的统一规范标准,不能用在正式的人民币金额书写;另外,有的时候我们打印一些文件时既需要规范的人民币大写,也需要小写与之相对应,上面的方法也无法满足两者同时存在。下面介绍的这个方法则可以弥补这个缺陷。

方法二

当你按要求设置好后,在制定的单元格内输入数字小写金额,就会在相应的单元格内生成中文数字大写的格式,而且符合规范标准:

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

你只要将上面的代码复制到相应的地方,就可以将指定单元格的小写金额转换成大写显示在另一个你需要的地方了。比如我要将D5单元格的小写金额转换成中文大写,显示在B5单元格里,则可以将上面的代码复制到B5单元格中,然后在D5中输入数字即可,如下图:

你只要替换掉代码中的D5换成你小写数字所在的单元格就可以按你自己需要的样子改变样式了。以防万一,自动转换后的数字还是亲自核对一下为好,呵呵。

--------------2010年6月28日编辑------------------

方法二补充
——由厚道厚德提供,略有修改:

=SUBSTITUTE(SUBSTITUTE(TEXT(TRUNC(FIXED(A1)),"[>0][dbnum2];[<0]负[dbnum2];;")&TEXT(RIGHT(FIXED(A1),2),"[dbnum2]0角0分;;"&IF(ABS(A1)>1%,"圆整",)),"零角",IF(ABS(A1)<1,,"零")),"零分","整") 

此方法使用和方法二一样,只是公式更简单,测试有效,只要替换公式中的A1为你的小写金额数字所在的单元格即可。但对金额大写转换似乎并不完美,比如1008.02自动转为壹仟零捌零贰分,少了个元,因为本人对该函数不了解,无从改起,所以不建议使用。

--------------2010年10月14日编辑------------------

方法三补充
——由surda提供:

=IF(MOD(A5,1)=0,NUMBERSTRING(A5,2)&”元整”,IF(ISERROR(NUMBERSTRING(MID(A5,FIND(“.”,A5)+2,1),2)),NUMBERSTRING(INT(A5),2)&”元”&NUMBERSTRING(MID(MOD(A5,1),3,1),2)&”角”,NUMBERSTRING(INT(A5),2)&”元”&NUMBERSTRING(MID(MOD(A5,2),3,1),2)&”角”&NUMBERSTRING(MID(ROUND(MOD(A5,1),3),4,1),2)&”分”))

这个方法也挺好用,不过不是非常符合财务习惯,比如只到角的要在后面添加整,这个函数就没有添加,没有元的时候会自动添加零元。

THE END

评论 16

  1. FIR
    🏅

    怎么都不出现整字呢,只有元角分,没有整

    1. 上面有好几个方法,你用的是哪个?

  2. 小潴仔
    🏅

    终于找到了, :razz:

  3. 宋强
    🏅

    使用办法:

    1. 以下内容是以 XY 为单元格例作金额大写的代码,因此想引用哪个单元格就将 XY 改成对应单元格即可;
    2. 代码中的 "人民币大写:" 可以更改为其他,如”大写“、”金额“等,但不要忘记英文格式的引号,即 ”
    3.为使此代码更容易使用,建议将此代码复制在另外一个记事本中使用 Ctrl+H 批量替换固定单元例格 XY为你要改变的单元格

    BY. Song Q
    代码内容如下:

    ="人民币大写:"&IF((INT(XY*10)-INT(XY)*10)=0,TEXT(INT(XY),"[DBNum2]G/通用格式")&"元"&IF((INT(XY*100)-INT((XY)*10)*10)=0,"整","零"&TEXT(INT(XY*100)-INT(XY*10)*10,"[DBNum2]G/通用格式")&"分"),TEXT(INT(XY),"[DBNum2]G/通用格式")&"元"&IF((INT(XY*100)-INT((XY)*10)*10)=0,TEXT((INT(XY*10)-INT(XY)*10),"[DBNum2]G/通用格式")&"角整",TEXT((INT(XY*10)-INT(XY)*10),"[DBNum2]G/通用格式")&"角"&TEXT(INT(XY*100)-INT(XY*10)*10,"[DBNum2]G/通用格式")&"分"))

  4. surda
    🏅🏅

    难得在WP界找到研究Excel的“同行”。我也来一例

    =IF(MOD(A5,1)=0,NUMBERSTRING(A5,2)&"元整",IF(ISERROR(NUMBERSTRING(MID(A5,FIND(".",A5)+2,1),2)),NUMBERSTRING(INT(A5),2)&"元"&NUMBERSTRING(MID(MOD(A5,1),3,1),2)&"角",NUMBERSTRING(INT(A5),2)&"元"&NUMBERSTRING(MID(MOD(A5,2),3,1),2)&"角"&NUMBERSTRING(MID(ROUND(MOD(A5,1),3),4,1),2)&"分"))

    1. 又是个新方法,谢谢分享,我将它添加进去。
      不过这个方法不大符合财务的要求,比如财务上到角的要求添加整,没有元就不需要添加零元了。

      1. surda@LMS
        🏅🏅

        呵呵 非财务专业
        比如财务上到角的要求添加整 公式修改如下(只需在第二个判断处将“角”更成“角整”)

        =IF(MOD(A5,1)=0,NUMBERSTRING(A5,2)&"元整",IF(ISERROR(NUMBERSTRING(MID(A5,FIND(".",A5)+2,1),2)),NUMBERSTRING(INT(A5),2)&"元"&NUMBERSTRING(MID(MOD(A5,1),3,1),2)&"角整",NUMBERSTRING(INT(A5),2)&"元"&NUMBERSTRING(MID(MOD(A5,2),3,1),2)&"角"&NUMBERSTRING(MID(ROUND(MOD(A5,1),3),4,1),2)&"分"))

        1. :neutral: 怎么把只有角分的时候前面出现的零元去掉呢?

          1. surda@LMS
            🏅🏅

            那需要再加判断那样公式就过长了 可以换公式
            =SUBSTITUTE(SUBSTITUTE(IF(A5<0,"負","")&TEXT(TRUNC(ABS(ROUND(A5,2))),"[DBNum2]")&"元"&IF(ISERR(FIND(".",ROUND(A5,2))),"",TEXT(RIGHT(TRUNC(ROUND(A5,2)*10)),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(A5,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(A5,2),3))=".",TEXT(RIGHT(ROUND(A5,2)),"[DBNum2]")&"分",IF(ROUND(A5,2)=0,"","整")),"零元零",""),"零元","")

            另:我收集过35种人民币小写转大写的公式,你可以研究下.地址:
            http://surda.cn/2010/07/excel-rmb-lowercase-to-uppercase/

  5. 厚道厚德
    🏅

    这个好用:=SUBSTITUTE(SUBSTITUTE(TEXT(TRUNC(FIXED(A1)),"[>0][dbnum2];[1%,"元整",)),"零角",IF(ABS(A1)<1,,"零")),"零分","整")

  6. diyidu
    🏅

    抢个沙发坐,学习了.

发表评论

Submit