设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: 老鬼
打印 上一主题 下一主题

[基础应用] [分享]数字转中文大写金额的加载宏

[复制链接]
11#
发表于 2005-5-23 22:41:00 | 只看该作者
试试这个公式:=IF(A1=0,"零元整",IF(A1<0,"负",)&IF(INT(ABS(A1)),TEXT(INT(ABS(A1)),"[dbnum2]")&"元",)&IF(INT(ABS(A1)*10)-INT(ABS(A1))*10,TEXT(INT(ABS(A1)*10)-INT(ABS(A1))*10,"[dbnum2]")&"角",IF(INT(ABS(A1))=ABS(A1),,"零"))&IF(ROUND(ABS(A1)*100-INT(ABS(A1)*10)*10,),TEXT(ROUND(ABS(A1)*100-INT(ABS(A1)*10)*10,),"[dbnum2]")&"分","整"))
12#
发表于 2005-5-30 17:58:00 | 只看该作者
经测试,楼主公布的宏有些缺陷, 当为负数是程序错误.等我有时间要重新改一下
13#
发表于 2005-5-30 18:08:00 | 只看该作者
這個更簡單:=TEXT(INT(ROUND(C6,2)), "[DBNum2]")&"元"&IF(INT(ROUND(C6,2))=ROUND(C6,2),"整",IF(INT(ROUND(C6,2)*10)=ROUND(C6*10,1),TEXT(RIGHT(INT(ROUND(C6,2)*10),1),"[DBNum2]")&"角整",TEXT(RIGHT(INT(C6*10),1),"[DBNum2]")&"角"&TEXT(RIGHT(ROUND(C6,2),1),"[DBNum2]")&"分"))
14#
发表于 2005-5-30 21:36:00 | 只看该作者
确实语句少了一些,但含有较大缺陷:

1.对负数的计算缺陷:

   "-"号不能转化为汉字"负"; 具体数值计算也不正确,

    如 -3.11 计算结果为 -肆元贰角壹分(正确结果应为负叁元壹角壹分)

2.对小数金额的描述缺陷:

   如 0.11 计算结果为 零元壹角壹分,  (正确结果应为壹角壹分,没有"零元"字样)

如果用公式的话, 还是11楼红池坝的好.

[此贴子已经被作者于2005-5-30 13:37:15编辑过]

15#
发表于 2005-5-30 22:34:00 | 只看该作者
要说功能强大,还是这个最牛的:http://www.office-cn.net/Article/Class5/Class16/200411/644.html
16#
发表于 2005-6-9 22:11:00 | 只看该作者
COOL!
17#
发表于 2005-6-14 18:24:00 | 只看该作者
以下是引用红池坝在2005-5-30 14:34:00的发言:



要说功能强大,还是这个最牛的:

http://www.office-cn.net/Article/Class5/Class16/200411/644.html

真的很牛!!!!![em17][em17][em17]
18#
发表于 2005-12-11 22:36:00 | 只看该作者
是简单多了,去零处理的好!
19#
发表于 2005-12-13 00:41:00 | 只看该作者
你的这个文件怎么打不开呀
20#
发表于 2005-12-13 08:42:00 | 只看该作者
顶一下

程序是我根据网上的一段VFP改写的,不知对大家是否有用?

Function dxrmb(je)
'人民币大小写转化函数
Dim dxsz, bzdw, newdw, dwje, dsz, tqsz As String
Dim t, stringlong, num0 As Integer
dxsz = "零壹贰叁肆伍陆柒捌玖" '大写数字
bzdw = "亿仟佰拾万仟佰拾元角分" '标准单位
num0 = 0
sz = Trim(Str(Round(je, 2) * 100)) '数据
stringlong = Len(sz) '取数字的长度
newdw = Trim(Right(bzdw, stringlong)) '取单位的位数
dwje = ""
If stringlong >= 12 Then
    MsgBox "输入数值已超出范围!!"
    dxreb = ""
    Exit Function
End If
For t = 1 To stringlong
     tqsz = Mid(sz, t, 1) '提取数字
     dsz = Mid(dxsz, Val(tqsz) + 1, 1) '提取大写数据
     dw = Mid(newdw, t, 1) '取得单位
     If tqsz = "0" Then
        If dw = "万" Or dw = "元" Then
           dsz = ""
           num0 = 0
        Else
           dsz = ""
           dw = ""
           num0 = num0 + 1
        End If
      Else
        If num0 >= 1 Then
           dsz = "零" + dsz
           num0 = 0
        End If
      End If
     dwje = dwje + dsz + dw
Next t
   If Right(sz, 2) = "00" Then
      dwje = dwje + "整"
   End If
dxrmb = dwje
End Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-19 22:15 , Processed in 0.101307 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表