Excel教程下载和软件下载中心,Microsoft技术社区联盟成员,全球领先的Excel门户,Office技术培训的最佳社区

« 判断Excel文件是否已经打开和是否存在按颜色求和与计数函数_Excel VBA应用 »

人民币大写转换Excel函数

文件类型:示例文本 文件大小:8K
文件作者:Excel Home 文件格式:xls
文件来源:《Excel实战技巧精粹》 授权方式:免费
资料添加:Kevin 添加时间:2008-10-6

 ▷ 下载地址:

       下载地址1

 ▷ 内容简介:

       中国Excel用户有一个普遍的需求是,希望能快速把阿拉伯数字转成人民币大写形式。尽管在中文版的Excel中可以利用单元格格式把数字显示为中文大写数字,但还是不符合人民币的说明习惯,而要里利用现有的工作表函数进行转换计算,转换过程又会较为复杂。

      许多Excel VBA爱好者都曾经利用编写自定义函数的方法来实现这个功能,代码各不相同,但都能较完美地解决这个问题。本例介绍的代码摘自Excel Home论坛上一位名叫gly1126的网友的发帖,是较为简短的一种。

  • quote 2.LILI
  • 在Excel2003不能用啊
    海龙闯月 于 2010-4-20 17:18:46 回复
    为什么不能用啊,你也的说个明白啊,
    海龙闯月 于 2010-4-20 17:19:22 回复
    为什么不能用啊,你也得说个明白啊,笨蛋……
  • 2008/11/16 14:06:54 回复该留言
  • quote 3.LILI
  • 为何显示#NAME
    XIAOHUA19681213 于 2009-4-14 15:48:46 回复
    怎么用呀
    123.j 于 2009-11-20 19:56:46 回复
    我跟你的一样呀,怎么解决呢??
  • 2008/11/16 14:23:05 回复该留言
  • quote 4.Simon
  • 我把这个例子下载,在2003版里双击函数,结果是
    12345678元9角整
    请问是怎么回事?谢谢
  • 2008/11/27 8:11:11 回复该留言
  • quote 6.旺仔
  • 比较好用,但为什么如填入23.51时会显示为贰拾参元伍角整呢
  • 2009/1/3 22:33:20 回复该留言
  • quote 14.nnw
  • 小数部分是41/51/61/71/81/91的都不能正常转换
  • 2009/4/3 17:12:27 回复该留言
  • quote 15.乔乔儿
  • 是用到宏了,宏得设为“中”,另外是有一个宏模块的,打开宏编辑找到它复制下来,同样粘到目标文件的宏模块里,然后在编辑栏里输入上面的公式就可以了。
  • 2009/4/13 11:28:11 回复该留言
  • quote 17.XIAOHUA19681213
  • 怎么用呀,乔乔儿能不能把你怎么联系告诉我一下呀,我工作中常用到这个,要是会用,就轻松多了
  • 2009/4/14 15:55:48 回复该留言
  • quote 18.xiaohua19681213
  • 哈哈,我会了,可以用公式,IF(ROUND(E11,2)<0,"无效数值",IF(ROUND(E11,2)=0,"零",IF(ROUND(E11,2)<1,"",TEXT(INT(ROUND(E11,2)),"[dbnum2]")&"元")&IF(INT(ROUND(E11,2)*10)-INT(ROUND(E11,2))*10=0,IF(INT(ROUND(E11,2))*(INT(ROUND(E11,2)*100)-INT(ROUND(E11,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(E11,2)*10)-INT(ROUND(E11,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(E11,2)*100)-INT(ROUND(E11,2)*10)*10)=0,"整",TEXT((INT(ROUND(E11,2)*100)-INT(ROUND(E11,2)*10)*10),"[dbnum2]")&"分")))其中,E11为小写处的单元格
    逆水龙麟 于 2010-2-27 17:14:45 回复
    顶 呵呵 谢谢这位了
  • 2009/4/15 14:58:52 回复该留言
  • quote 19.xutfen75
  • 使用方法:1、启动Excel。按Alt+F11键,打开“visual basic编辑器”。 2、在“visual basic编辑器”中,单击“插入”菜单栏中的“模块”命令,插入一个模块。双击左侧“工程”窗口中的“模块1”选项,在窗口右边展开“模块1(代码)”编辑窗口,然后输入公式。(公式我就不发了,网上随便一搜就有很多) 3、输 入完成后,关闭“visual basic编辑器”返回工作表。 4、现在,我们可测试一下这个函数。首先,在a1单元格中输入一个小写数字的金额,例如123456.78,然后,在a2单元 格中输入公式:=dx(a1),确认后即可将a1所表示的小写数字金额转换为大写的数字金额,并在a2单元格中显示出来。怎么样,方便吧?
    liuquanrong 于 2010-1-22 10:40:18 回复
    你好!你的转换大写公式能够详细教我吗?从头到尾可以吗?谢谢!What
  • 2009/5/14 13:35:59 回复该留言
  • quote 20.LINSON
  • 按楼上这样试了,还是不能用,能不能发个更容易操作的帖子,谢谢!
  • 2009/5/27 14:42:32 回复该留言
  • quote 21.abing
  • 这个函数在
    5.41 伍元肆角整
    5.51 伍元伍角整
    5.61 伍元陆角整
    5.71 伍元柒角整
    5.81 伍元捌角整
    5.91 伍元玖角整
    这几个范围内会少写一分
    5.11 伍元壹角壹分
    5.21 伍元贰角壹分
    5.31 伍元叁角壹分
    这个就对了不知道原理在哪儿?

    soft580 于 2009-12-9 11:27:13 回复
    进入VBA编辑状态。
    把:f = (j / 10 - Int(j / 10) ) * 10 改为:f = (j / 10 - Int(j / 10) + 0.00001) * 10。即加上:+ 0.00001。
  • 2009/6/3 14:16:10 回复该留言
  • quote 24.你这个不实用
  • 你这个不实用,必须开启宏,我给你一个:
    =IF(ISNUMBER(A1),SUBSTITUTE(SUBSTITUTE(IF(A1=TRUNC(A1),NUMBERSTRING(A1,2)&"圆整",IF(A1*10=TRUNC(A1*10),NUMBERSTRING(TRUNC(A1),2)&"元"&NUMBERSTRING(MID(A1,FIND(".",A1)+1,1),2)&"角整",NUMBERSTRING(TRUNC(A1),2)&"元"&NUMBERSTRING(MID(A1,FIND(".",A1)+1,1),2)&"角"&NUMBERSTRING(RIGHT(ROUND(A1,2),1),2)&"分")),"零元",""),"零角",""),"非数字值")
  • 2009/7/21 17:31:38 回复该留言
  • quote 25.你这个不实用
  • IF(ISNUMBER(A1),SUBSTITUTE(SUBSTITUTE(IF(A1=TRUNC(A1),NUMBERSTRING(A1,2)&"圆整",IF(A1*10=TRUNC(A1*10),NUMBERSTRING(TRUNC(A1),2)&"元"&NUMBERSTRING(MID(A1,FIND(".",A1)+1,1),2)&"角整",NUMBERSTRING(TRUNC(A1),2)&"元"&NUMBERSTRING(MID(A1,FIND(".",A1)+1,1),2)&"角"&NUMBERSTRING(RIGHT(ROUND(A1,2),1),2)&"分")),"零元",""),"零角",""),"非数字值")
  • 2009/7/21 17:32:20 回复该留言
  • quote 27.学习中
  • 28楼的还有点小问题,如601.03显示为"陆佰零壹元叁分",分前面少了个"零"
    soft580 于 2009-12-9 11:24:53 回复
    进入编辑VBA状态。
    把:B = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 1, "零", "")))中的 f > 1 改为 f >= 1 就可以了。
  • 2009/8/13 20:26:09 回复该留言
  • quote 28.xiaoniuer
  • 28、29楼的公式如果写0.01,就会显示“角壹分”;如果写90.01,就会显示“玖拾元角壹分”,可见还是不完善,恳请哪位高人指教个明招!谢谢!
  • 2009/8/14 14:49:59 回复该留言
  • quote 30.sampam
  • =IF(I17<0,"负","")&IF(OR(I17=0,I17=""),"零元整",IF(RIGHT(ABS(I17)*100,2)="00", NUMBERSTRING(INT(ABS(I17)),2)&"元整", IF(ABS(I17)<1,"",NUMBERSTRING(INT(ABS(I17)),2)&"元")&IF(RIGHT(ABS(I17)*100,1)="0",NUMBERSTRING(LEFT(RIGHT(ABS(I17)*100,2),1),2)&"角整",IF((ABS(I17)*100-INT(ABS(I17))*100)<10,IF(ABS(I17)>1,"零","")&NUMBERSTRING(RIGHT(ABS(I17)*100,1),2)&"分",NUMBERSTRING(LEFT(RIGHT(ABS(I17)*100,2),1),2)&"角"&NUMBERSTRING(RIGHT(ABS(I17)*100,1),2)&"分"))))

    没有处理小数位数,应保持2位
  • 2009/8/26 16:25:39 回复该留言
  • quote 31.sampam
  • 将34楼公式中OR(I17=0,I17="")改为OR(I17=0,NOT(Isnumner(I17))效果更好,可以排除非数值错误,并将非数字值置为0
  • 2009/8/26 17:11:22 回复该留言
  • quote 34.小菜鸟
  • 本人的绝对正确完美显示上面所说的错误=IF(ROUND(M11,2)<0,"无效数值",IF(ROUND(M11,2)=0,"零元",IF(ROUND(M11,2)<1,"",TEXT(INT(ROUND(M11,2)),"[dbnum2]")&"元")&IF(INT(ROUND(M11,2)*10)-INT(ROUND(M11,2))*10=0,IF(INT(ROUND(M11,2))*(INT(ROUND(M11,2)*100)-INT(ROUND(M11,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(M11,2)*10)-INT(ROUND(M11,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(M11,2)*100)-INT(ROUND(M11,2)*10)*10)=0,"整",TEXT((INT(ROUND(M11,2)*100)-INT(ROUND(M11,2)*10)*10),"[dbnum2]")&"分")))
  • 2009/11/6 22:14:43 回复该留言
  • quote 36.hawhgfy
  • 发贴的人语言很贵地!不告诉大家你的公式在啥条件下使用!有点不够意思啊!
  • 2009/12/9 19:38:27 回复该留言
  • quote 37.余真
  • 你下载它电子表格(这全电子表格带了宏),然后就以这个表子表格完成你的工作就可以了
  • 2009/12/17 12:18:19 回复该留言
  • quote 38.aresyu
  • 我发现把b和c稍微改一下可以解决0.41,0.51,0.61,0.71,0.81,0.91出错的问题和1.01不能显示为壹元零壹分的问题,写法如下:
    b = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 0.9999999999999, "零", "")))
    c = IIf(f < 0.999999999999, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")
    但是不知道这样改了以后哪里会不会还有错误。
  • 2009/12/31 10:29:49 回复该留言
  • quote 44.eddie
  • 本人用这个
    =IF(G13=0,"零元",IF(G13<0,TEXT(INT(ABS(G13)),"负[DBNum2]g/通用格式")&"元"&IF((INT(ABS(G13)*10)-INT(ABS(G13))*10)=0,"",TEXT(INT(ABS(G13)*10)-INT(ABS(G13))*10,"[DBNum2]")&"角")&IF((INT(ABS(G13)*100)-INT(ABS(G13)*10)*10)=0,"整",IF(INT(ABS(G13)*10)-INT(ABS(G13))*10=0,"零","")&TEXT(INT(ABS(G13)*100)-INT(ABS(G13)*10)*10,"[DBNum2]")&"分"),TEXT(INT(G13),"[DBNum2]g/通用格式")&"元"&IF(INT(G13*10)-INT(G13)*10=0,"",TEXT(INT(G13*10)-INT(G13)*10,"[dbnum2]")&"角")&IF((INT(G13*100)-INT(G13*10)*10)=0,"整",IF(INT(G13*10)-INT(G13)*10=0,"零","")&TEXT(INT(G13*100)-INT(G13*10)*10,"[DBNum2]")&"分")))
  • 2010/4/12 12:32:12 回复该留言
  • quote 45.djj434
  • 给你们一个更猛的函数,不用写宏:
    =TEXT(F18,"[dbnum2]0 万 0 仟 0 佰 0 拾 0 元 整")
  • 2010/4/27 23:28:03 回复该留言
  • quote 46.凑热闹
  • 最近我用自己的方法成功的对工资单上的数字进行摘取性中文大写,效果还可以,这个月工资单表格下来后,我检查一下是否正常。有需要的请给我联系,哥们互通有无嘛!
  • 2010/5/12 14:44:38 回复该留言
  • quote 49.吉人天下
  • 1、启动Excel。按Alt+F11键,打开“visual basic编辑器”。
    2、在“visual basic编辑器”中,单击“插入”菜单栏中的“模块”命令,插入一个模块。双击左侧“工程”窗口中的“模块1”选项,在窗口右边展开“模块1(代码)”编辑窗口,然后输入以下内容:
    Function dx(a)
    dx = Replace(Replace(Replace(Join(Application.Text(Split(Format(a, " 0. 0 0;负 0. 0 0; ")), ["[dbnum2]"&{0,"","圆0角;;圆零","0分;;整"}]), p), "零圆零", a), "零圆", a), "零整", "整")
    End Function
    3.回到execl中,在a1单元格中输入一个小写数字的金额,例如123456.78,然后,在a2单元 格中输入公式:=dx(a1)
    (这步还没有完哦,还要设置a2单元格为人民币大写,注:人民币大写设置:右键a2单元格-数字
    -特殊)
    4.实现多个操作就拖拽右下角的十字花就可以啦!


  • 2010/6/24 22:45:15 回复该留言
  • quote 52.学点东西有用
  • 不能使用错误多.我推荐一组代码共享好用.
    Function dx(m)
    dx = IIf(m = "", "", IIf(Round(m, 2) < 0, "负", "") & IIf(Abs(m) + 0.005 < 1, "", Application.Text(Int(Round(Abs(m), 2)), "[DBnum2]") & "元") & Application.Text(Right(100 * Round(m, 2), 2), "[dbnum2]0角0分"))
    dx = Replace(Replace(dx, "零角", IIf(Abs(m) > 1 And Right(Round(100 * m, 0), 1), "零", "")), "零分", IIf(Round(m, 2), "整", ""))
    End Function
  • 2010/7/11 19:44:12 回复该留言
  • quote 53.学点东西有用
  • 、启动Excel。按Alt+F11键,打开“visual basic编辑器”。
    2、在“visual basic编辑器”中,单击“插入”菜单栏中的“模块”命令,插入一个模块。双击左侧“工程”窗口中的“模块1”选项,在窗口右边展开“模块1(代码)”编辑窗口,然后输入以下内容:
    Function dx(m)
    dx = IIf(m = "", "", IIf(Round(m, 2) < 0, "负", "") & IIf(Abs(m) + 0.005 < 1, "", Application.Text(Int(Round(Abs(m), 2)), "[DBnum2]") & "元") & Application.Text(Right(100 * Round(m, 2), 2), "[dbnum2]0角0分"))
    dx = Replace(Replace(dx, "零角", IIf(Abs(m) > 1 And Right(Round(100 * m, 0), 1), "零", "")), "零分", IIf(Round(m, 2), "整", ""))
    End Function
    3.回到execl中,在a1单元格中输入一个小写数字的金额,例如123456.78,然后,在a2单元 格中输入公式:=dx(a1)
    (这步还没有完哦,还要设置a2单元格为人民币大写,注:人民币大写设置:右键a2单元格-数字
    -特殊)
    4.实现多个操作就拖拽右下角的十字花就可以啦!
    5、要通用,可以将选择VB中选“文件”>"导出文件">另存为:改名称或不改>保存.下次使用其它电子表格时,打开VB,选“文件”>"导入文件">就建立了模块或将此模块复制到Excel默认的宏文件夹下,加载宏,全部电子表格都能使用了此函数了.
  • 2010/7/11 19:54:25 回复该留言
  • quote 56.梅若凝雪
  • 用这个再简单不过了:=NUMBERSTRING(引用的单元格地址,2)&"元整"
    我每个月做工资表,都是用的这个。
  • 2010/7/24 10:58:18 回复该留言
  • quote 57.么尤
  • Function dx(m)
    y = Int(Abs(m))
    j = Round(Abs(m) - y, 2)
    f = (j * 10 - Int(j * 10)) / 10
    a = Application.Text(y, "[dbnum2]")
    d = "元"
    If j < 0.1 Then e = "" Else e = "角"
    If f < 0.01 Then g = "整" Else g = "分"
    If f < 0.001 Then c = "" Else c = Application.Text(Round(f * 100, 0), "[dbnum2]")
    If j = 0 Then b = "" Else b = Application.Text(Int(j * 10), "[dbnum2]")
    If m < 0 Then Z = "负" Else Z = ""
    dx = Z & a & d & b & e & c & g
    End Function
  • 2010/7/24 22:40:01 回复该留言
  • quote 60.K.F.C
  • 有一个不常遇到的小瑕疵,输入0.01时候显示的是.01壹分
  • 2010/8/8 10:07:11 回复该留言
  • quote 62.ysy0209
  • 用了46楼的公式,15.99显示:零 万 零 仟 零 佰 壹 拾 陆 元 整
    请问怎样调整呢?
  • 2010/9/4 12:45:57 回复该留言
  • quote 64.xmcgx
  • 用这个再简单不过了:=NUMBERSTRING(引用的单元格地址,2)&"元整"
    我每个月做工资表,都是用的这个。

    56楼的,这个好用。
  • 2010/9/19 18:40:42 回复该留言
  • quote 65.zhangkai
  • 把该表保存为加载宏文件,打开空表然后加载宏就可以了。
  • 2010/9/26 11:43:41 回复该留言
  • quote 66.LOVEU
  • 引自 djj434
    给你们一个更猛的函数,不用写宏:
    =TEXT(F18,"[dbnum2]0 万 0 仟 0 佰 0 拾 0 元 整")

    此函数无法转换小数位,只能转整数
  • 2010/9/29 11:50:42 回复该留言
  • quote 67.charles675
  • 可以用,在小数点前一位不为零的时候,中文大写正确,可是当小数点前一位为零的时候,中文大写就不准确了
  • 2010/10/21 22:11:41 回复该留言
  • quote 69.李汶静
  • http://lwj1996
  • 确实简便,我曾经自己也用函数解决过大写的问题,用excel打印支票,但是比较繁琐,没有这个好,佩服。
  • 2011/3/10 11:48:58 回复该留言
  • quote 72.xsjjsgq
  • 本人的绝对正确完美显示上面所说的错误=IF(ROUND(M11,2)<0,"无效数值",IF(ROUND(M11,2)=0,"零元",IF(ROUND(M11,2)<1,"",TEXT(INT(ROUND(M11,2)),"[dbnum2]")&"元")&IF(INT(ROUND(M11,2)*10)-INT(ROUND(M11,2))*10=0,IF(INT(ROUND(M11,2))*(INT(ROUND(M11,2)*100)-INT(ROUND(M11,2)*10)*10)=0,"","零"),TEXT(INT(ROUND(M11,2)*10)-INT(ROUND(M11,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(M11,2)*100)-INT(ROUND(M11,2)*10)*10)=0,"整",TEXT((INT(ROUND(M11,2)*100)-INT(ROUND(M11,2)*10)*10),"[dbnum2]")&"分")))
  • 2011/5/23 22:55:04 回复该留言
  • quote 73.cathybin
  • 第一次是实验成功的,等关闭再次打开就显示#NAME?了,不知道什么原因,我照着53楼的高手操作过了,还是不行。求赐教!
  • 2011/6/4 16:15:29 回复该留言
  • quote 74.nhsjh
  • =IF(A2<0,"金额为负无效",IF(OR(A2=0,A2=""),"零元整",IF(A2<1,"",TEXT(INT(A2),"[DBNum2]G/通用格式")&"元")&IF(INT(A2*10)-INT(A2)*10=0,IF(INT(A2)*(INT(A2*100)-INT(A2*10)*10)=0,"","零"),TEXT(INT(A2*10)-INT(A2)*10,"[DBNum2]G/通用格式")&"角")&IF((INT(A2*100)-INT(A2*10)*10)=0,"整",TEXT((INT(A2*100)-INT(A2*10)*10),"[DBNum2]G/通用格式")&"分")))
  • 2011/6/10 18:13:06 回复该留言
  • quote 75.nhsjh
  • 在B2中录入上面的公式,在A2中录入小写金额,B2就会显示大写金额了。
  • 2011/6/10 18:15:59 回复该留言
  • quote 76.询问
  • 各位朋友大家好!我想问一下把多张工作表中的相同单元格中的数据,汇总到一张工作表(注:该表与多张工作表相同的单元格)要怎么做啊?谢谢那位高人了。
  • 2011/7/20 14:54:41 回复该留言
  • quote 77.xl3750727
  • 用以下公式可以解决:=IF(G19=0,"",IF(INT(G19),TEXT(TRUNC(G19),"[dbnum2]")&"元","")&IF(MOD(G19,1)=0,"整",IF(TRUNC(G19,1),IF(B4=TRUNC(G19,1),TEXT(LEFT(RIGHT(G19*100,2)),"[dbnum2]0角整"),TEXT(RIGHT(G19*100,2),"[dbnum2]0"&IF(LEFT(RIGHT(G19*100,2))="0","","角")&"0分")),TEXT(G19*100,"[dbnum2]0分"))))
  • 2011/7/21 14:07:59 回复该留言
  • quote 78.hopair
  • =SUBSTITUTE(SUBSTITUTE(IF(F3<0,"负","")&TEXT(TRUNC(ABS(ROUND(F3,2))),"[DBNum2]")&"元"&IF(ISERR(FIND(".",ROUND(F3,2))),"",TEXT(RIGHT(TRUNC(ROUND(F3,2)*10)),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(F3,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(F3,2),3))=".",TEXT(RIGHT(ROUND(F3,2)),"[DBNum2]")&"分",IF(ROUND(F3,2)=0,"","整")),"零元零",""),"零元","")
  • 2011/7/22 13:57:20 回复该留言
  • quote 80.123
  • 请求一人民币大小写函数
    要求107000.53
    为:壹拾万零柒仟元伍角叁
    102030
    为:壹拾万零贰仟零叁拾元整
  • 2011/8/30 15:37:13 回复该留言
  • quote 81.123
  • 请帮忙改以下函数,做到:
    102030
    能转换成:壹拾万零贰仟零叁拾元整


    =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)<0.1,,"零")))&IF(ROUND(ABS(A2)*100-INT(ABS(A2)*10)*10,),TEXT(ROUND(ABS(A2)*100-INT(ABS(A2)*10)*10,),"[dbnum2]")&"分","整"))
  • 2011/8/30 15:40:06 回复该留言
  • quote 83.123
  • 请高手帮忙
    更改下列函数102030能转换成:壹拾万零贰仟零叁拾元整
    =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)<0.1,,"零")))&IF(ROUND(ABS(A2)*100-INT(ABS(A2)*10)*10,),TEXT(ROUND(ABS(A2)*100-INT(ABS(A2)*10)*10,),"[dbnum2]")&"分","整"))


  • 2011/8/30 15:44:36 回复该留言
  • quote 86.mongren
  • 这个不是函数,是用了宏命令,不能通用,没有价值!宏命令如下:
    Function N2RMB(M)
    y = Int(Round(100 * Abs(M)) / 100)
    j = Round(100 * Abs(M) + 0.00001) - y * 100
    f = (j / 10 - Int(j / 10)) * 10
    A = IIf(y < 1, "", Application.Text(y, "[DBNum2]") & "元")
    b = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 1, "零", "")))
    c = IIf(f < 1, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")
    N2RMB = IIf(Abs(M) < 0.005, "", IIf(M < 0, "负" & A & b & c, A & b & c))
    End Function
  • 2011/9/16 15:55:12 回复该留言
  • quote 87.mongren
  • 下面两个函数都很实用(还能正确反映人民币负数):

    1、=SUBSTITUTE(SUBSTITUTE(IF(E12>-0.5%,,"负")&TEXT(INT(ABS(E12)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(FIXED(E12),2),"[dbnum2]0角0分;;"&IF(ABS(E12)>1%,"整",)),"零角",IF(ABS(E12)<1,,"零")),"零分","整")

    2、=SUBSTITUTE(SUBSTITUTE(IF(-RMB(E12),TEXT(E12,";负")&TEXT(INT(ABS(E12)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(E12),2),"[dbnum2]0角0分;;整"),),"零角",IF(E12^2<1,,"零")),"零分","整")
  • 2011/9/16 16:10:39 回复该留言
  • quote 88.wuxue107
  • =NUMBERSTRING(INT(ROUND(A4*100,0)/100),2)&IF(ROUND(A4*100,0)=0,"圆整","圆"&NUMBERSTRING(INT(MOD(ROUND(A4*100,0),100)/10),2)&"角"&NUMBERSTRING(MOD(ROUND(A4*100,0),10),2)&"分")
    各显神通吧。我也写一个。
  • 2011/9/26 1:10:14 回复该留言
  • quote 89.yangqinghong
  • =IF(ROUND(Q9,2)=0,"",IF(ROUND(ABS(Q9),2)>=1,TEXT(INT(ROUND(ABS(Q9),2)),"[DBNum2]")&"元","")&IF(RIGHT(TEXT(Q9,".00"),2)*1=0,"整",IF(RIGHT(TEXT(Q9,".00"),4)*1>=1,IF(RIGHT(TEXT(Q9,".00"),2)*1>9,"","零"),IF(ROUND(ABS(Q9),2)>=1,"零",""))&IF(RIGHT(TEXT(Q9,".00"),2)*1>9,TEXT(LEFT(RIGHT(TEXT(Q9,".00"),2)),"[DBNum2]")&"角","")&IF(RIGHT(TEXT(Q9,".00"))*1>0,TEXT(RIGHT(TEXT(Q9,".00")),"[DBNum2]")&"分","整")))
  • 2012/1/4 14:10:38 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

相关统计

  • 文章总数:922
  • 评论总数:4738
  • 引用总数:0
  • 浏览总数:9171565
  • 留言总数:411
  • 当前主题:exhome
  • 当前样式:default
本站特聘法律顾问:徐怀玉律师  沪ICP备11019229号