设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5808|回复: 15
打印 上一主题 下一主题

[行业] 函数实现帐本计数及大写金额(方法二则)

[复制链接]
跳转到指定楼层
1#
发表于 2008-3-19 11:27:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、实现金额大写,解决单元格特殊格式中"中文大写数字"实现数字的大写,无法转换成为金额的元角分的问题.
二、实现仿帐面计数格式(见下图)


实例下载:

方法二在六楼下载

[ 本帖最后由 tanhong 于 2008-3-19 16:17 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2008-3-19 11:43:13 | 只看该作者
又有好例子, 学习学习!!

点击这里给我发消息

3#
发表于 2008-3-19 13:30:06 | 只看该作者
嘿嘿......试用过隐藏函数吗,公式可以短很多哟......
用NUMBERSTRING
先不公布
江版动脑筋自己做一个
4#
发表于 2008-3-19 13:56:06 | 只看该作者
江版出新品
5#
 楼主| 发表于 2008-3-19 14:44:27 | 只看该作者
原帖由 pureshadow 于 2008-3-19 13:30 发表
嘿嘿......试用过隐藏函数吗,公式可以短很多哟......
用NUMBERSTRING
先不公布
江版动脑筋自己做一个


哈哈!小妖卖关子.考我哦
好,我做一个,下午教卷
6#
 楼主| 发表于 2008-3-19 15:44:53 | 只看该作者
小妖完成你下达的任务.用隐藏函数做的,实现金额大写函数,不知道是不是符合要求,你有什么更好的办法,帖出来哦.
下面是我写的函数.
=IF(ISERR(SEARCH(".",C3))=FALSE,NUMBERSTRING(INT(C3),2)&"元" &IF(LEN(C3)-SEARCH(".",C3)=1,NUMBERSTRING(RIGHT(C3,1),2) &"角整",NUMBERSTRING(LEFT(RIGHT(C3,2),1),2) &"角"& NUMBERSTRING(RIGHT(C3,1),2) &"分"),NUMBERSTRING(INT(C3),2)&"元整")

见下图:

实例二:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

7#
发表于 2008-3-19 16:23:02 | 只看该作者
江版输入2.392试试

点击这里给我发消息

8#
发表于 2008-3-19 16:30:58 | 只看该作者
还有,再输入2.329试试
9#
 楼主| 发表于 2008-3-19 16:33:20 | 只看该作者
小妖提示对,我还少了四舍五入,小妖给出了一个更简便的方法(见如下公式):

="人民币:"&NUMBERSTRING(ROUNDDOWN(C3,0),2)&"元"&NUMBERSTRING(ROUNDDOWN(MOD(C3*100,100)/10,0),2)&"角"&NUMBERSTRING(MOD(C3*100,10),2)&"分"

点击这里给我发消息

10#
发表于 2008-3-19 16:52:05 | 只看该作者
再分享两个自定义函数(不是我写的):
Function NtoC(n)  'n as single
Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分"
Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整"
  NtoC = ""
  sNum = Trim(Str(Int(n * 100)))
  For I = 1 To Len(sNum) '逐位转换
    NtoC = NtoC + Mid(cNum, (Mid(sNum, I, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + I, 1)
  Next
  For I = 0 To 11 '去掉多余的零
    NtoC = Replace(NtoC, Mid(cCha, I * 2 + 1, 2), Mid(cCha, I + 26, 1))
  Next
End Function

Public Function BigNum(小写数字 As Double)   '将数字转为中文大写金额(本函数根据网络上的代码改编)
Application.Volatile
    If 小写数字 = 0 Then
        BigNum = "零元整"
    Else
        Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分"
        Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整"
        BigNum = ""
        sNum = Round(Abs(小写数字), 2) * 100
        For I = 1 To Len(sNum) '逐位转换
            BigNum = BigNum + Mid(cNum, (Mid(sNum, I, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + I, 1)
        Next
        For I = 0 To 11 '去掉多余的零
            BigNum = Replace(BigNum, Mid(cCha, I * 2 + 1, 2), Mid(cCha, I + 26, 1))
        Next
        If 小写数字 < 0 Then
            BigNum = "负" & BigNum
        End If
    End If
End Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 11:08 , Processed in 0.125987 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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