EXCLE实现货币金额大小写转换

[雨 2005/06/15 15:49 | | | ]

今天处里要我用EXCEL做一个电子版的汇出汇款申请书,主要是提供给一些大客户使用。这样他们就可以直接在电脑上填写,希望客户在输入一些基本的要素后,电脑能够生成我行标准的汇出汇款申请书,不用手写了。我一向对能够提高EXCEL水平的事都很积极,在做的过程中,其他的都很容易,无非单元格引用,但在金额大小写转换时遇到了难题。

主要原因是:EXCEL虽然在单元格设置里可以将小写数字转换成中文大写,但遇到角分时,会有一点点问题。比如美元123.45,按照中文大写应该是美元壹佰贰拾叁元肆角伍分,EXCEL转换后却是“壹佰贰拾叁.肆伍”。思考了一下,看来只能通过分离整数部分、小数角、小数分来实现。同时按照习惯,若没有分位时,习惯在后面加上一个“整”字,这个问题也要考虑进去。因此函数要判断是否是整数、是否到角位。经过反复调试,终于成功了。实现方法如下:

假设要转换的数字在A1,我们通过分离在三个单元格来实现,A2显示整数位,B2显示角位,C2显示分位。如果上一位是最后一位,则改为不显示。

引用
那么A2栏的函数为:

=IF(INT(A1)-A1=0, TEXT(INT(A1),"[DBNum2][$-804]G/通用格式")&"元整",TEXT(INT(A1),"[DBNum2][$-804]G/通用格式")&"元")


引用
B2栏的函数为:

=IF(INT(A1)-A1=0,"",IF(A1*10-INT(A1*10)=0,TEXT(INT(A1*10-INT(A1)*10),"[DBNum2][$-804]G/通用格式")&"角整",TEXT(INT(A1*10-INT(A1)*10),"[DBNum2][$-804]G/通用格式")&"角"))

引用
C2栏的函数为:

=IF(INT(A1*10)-A1*10=0,"",TEXT(INT(A1*100-INT(A1*10)*10),"[DBNum2][$-804]G/通用格式")&"分")

通过调整单元格大小,而且将A2设为居右、B2设为居中、C2设为居左可以实现。但拼凑出来的在显示上毕竟不够美观,而且B2单元格有时候两个字,有时候三个字,这时我想到了单元格文本数值的合并,经过测试,也最终实现了在一个单元格显示。方法如下:

在第二行输入完公式后,隐藏起来,做为过渡单元格,在A3栏输入“=A2&B2&C2”,大写在一个单元格显示出来了,就这么简单! 

Tags:
数字时代 | 评论(10) | 引用(0) | 阅读(15292)
v
2007/11/23 21:33
很好,只是在通常情况下0.98时会出现零元玖角捌分
轻轻的 Email Homepage
2007/11/13 15:54
2007/11/11 23:21
正在用.将E12中的数字在任意格生成大写

=CONCATENATE(IF(TRUNC(E12)<>0,TEXT(TRUNC(E12),"[DBNum2]G/通用格式")&"圆",""),IF(TRUNC(E12,1)-TRUNC(E12)<>0,TEXT(ROUND((TRUNC(E12,1)-TRUNC(E12))*10,0),"[DBNum2]G/通用格式")&"角",""),IF(TRUNC(E12,2)-TRUNC(E12,1)<>0,TEXT(ROUND((TRUNC(E12,3)-TRUNC(E12,1))*100,0),"[DBNum2]G/通用格式")&"分",""),"整")
2007/11/08 08:50
\"[DBNUM2]\"我的电脑怎么找不到这种格式,在EXCEL单元格中输入,提示错误.怎么办?
yy
2007/09/19 08:59
Thank you!
u
2007/08/11 01:10
楼主把整数位看成一个整体,可是我还想细分怎么办?比如12345.68,分成  零  零  壹  贰  叁  肆  伍  陆  捌,每个一格,怎么设置?
DULIFENXI
2007/06/03 15:21
错。。。。。。美元并没有“角”只有十分,比如:1.23元,大写是壹元二十三分。这个问题要考虑全面一点再发表,还要多测试。
Michelle
2006/06/18 00:45
Hi, Please ignor my last massage since forgot to change the \"A7\" to \"A1\" completely.

For the promblem of \"jiao\", please try this way:

=IF((A1-INT(A1))=0,TEXT(A1,\"[DBNUM2]\")&\"元整\",IF(INT(A1*10)-A1*10=0,TEXT(INT(A1),\"[DBNUM2]\")&\"元\"&TEXT((INT(A1*10)-INT(A1)*10),\"[DBNUM2]\")&\"角整\",TEXT(INT(A1),\"[DBNUM2]\")&\"元\"&IF(INT(A1*10)-INT(A1)*10=0,\"零\",TEXT(INT(A1*10)-INT(A1)*10,\"[DBNUM2]\")&\"角\")&TEXT(RIGHT(A1,1),\"[DBNUM2]\")&\"分\"))

You only need to type this in one cell instead of three cells.
Michelle
2006/06/18 00:41
Hi, for this promlem, please try this:

=IF((A1-INT(A1))=0,TEXT(A1,\"[DBNUM2]\")&\"元整\",IF(INT(A1*10)-A7*10=0,TEXT(INT(A1),\"[DBNUM2]\")&\"元\"&TEXT((INT(A1*10)-INT(A1)*10),\"[DBNUM2]\")&\"角整\",TEXT(INT(A1),\"[DBNUM2]\")&\"元\"&IF(INT(A1*10)-INT(A7)*10=0,\"零\",TEXT(INT(A1*10)-INT(A1)*10,\"[DBNUM2]\")&\"角\")&TEXT(RIGHT(A1,1),\"[DBNUM2]\")&\"分\"))。

You only need to type this in one cell instead of three!

Hope above helps.
zoe
2006/06/17 16:28
你的模板很好, 可是我看不太懂, 惭愧!
我现在有个问题, 就是想把英文的大小写互相转换, 目前, 我想全部要大写, 请问你是否可以帮忙, 甚是感谢!
liuyang 回复于 2006/06/17 22:56
使用UPPER()函数。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemot
emotemotemotemot
emotemotemotemot
emotemotemotemot
emotemotemotemot
emotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]