收藏 分享(赏)

EXCEL,数字变大写公式.doc

上传人:11xg27ws 文档编号:9294313 上传时间:2019-08-01 格式:DOC 页数:6 大小:30KB
下载 相关 举报
EXCEL,数字变大写公式.doc_第1页
第1页 / 共6页
EXCEL,数字变大写公式.doc_第2页
第2页 / 共6页
EXCEL,数字变大写公式.doc_第3页
第3页 / 共6页
EXCEL,数字变大写公式.doc_第4页
第4页 / 共6页
EXCEL,数字变大写公式.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、 近来转了转几个 EXCEL 相关论坛,发现有部分网友在寻求数字金额转换为人民币大写的方法。出于好奇,我在网上搜索了一番,什么 VBA、加载宏,公式函数各式方法争相亮相,应有尽有。但我的习惯是,只要能用公式解决的问题,坚决不使用 VBA。所以我就特别地关注使用公式来生成的方法,结果是用公式的方法可谓是更加地灿烂缤纷,使人眼花缭乱。通过分析我收集到的二十几个公式,发现比较牛,适合我口味的公式有三个,在此我将其列出。公式一:SUBSTITUTE(SUBSTITUTE(IF(A1=1,TEXT(INT(ROUND(ABS(A1),2),“DBNum2“)&“元“,“)&IF(RIGHT(TEXT(A

2、1,“.00“),2)*1=0,“整“,IF(RIGHT(TEXT(A1,“.00“),4)*1=1,IF(RIGHT(TEXT(A1,“.00“),2)*19,“,“零“),IF(ROUND(ABS(A1),2)=1,“零“,“)&IF(RIGHT(TEXT(A1,“.00“),2)*19,TEXT(LEFT(RIGHT(TEXT(A1,“.00“),2),“DBNum2“)&“角“,“)&IF(RIGHT(TEXT(A1,“.00“)*10,TEXT(RIGHT(TEXT(A1,“.00“),“DBNum2“)&“分“,“整“)我用不同的数值对这三个公式进行了一番测试,都达到了我的要求,至

3、少到目前为止还没有发现上述公式存在着什么错误。上述公式对负数的处理采取了不同的方法。公式一和公式二对负数是在其前部加上一个“负”字,而公式三则是按正数进行处理。我比较推崇公式三的方式,不是还有条件格式可以设置吗?若是负数就用条件格式来变为红色。我不准备在此对上述公式进行分析解说。撰写本文的目的是我也想自己来“组装”一个所谓的通用公式。我只所以说是“组装”而不是叫什么“开发”或者是“拼凑”,是因为 EXCEL 的函数现成地摆在了那里,使用时就是为了达到某种目的,按照其固有的规则,将其进行有机的组合,可谓“组装”。但是在这个过程中,也是要开动脑筋的,并非是随随便便“拼凑”就能成功的。本文的目的就是

4、想将我在“组装”公式时的思路展现出来。若用程序设计语言(比如用 C 语言)来写一个人民币数字金额转大写金额会怎样考虑呢?我想每一位数字都要考虑到。但在 EXCEL 中,单元格格式中有一个“特殊”格式,里面就有将小写数字转换为大写数字的格式。但要注意的是,这里转换的是数字而不是金额。所以转换出来后并不存在“元”、“角”、“分”、“整”等在大写金额中出现的字。但是,“元”只出现在整数部分的后面,而小数部分只有角分两位。这样只要利用 EXCEL 的“特殊”格式将数据分为整数部分、角位和分位三个部分来处理就行了。处理的顺序是先整数,再角位、再分位。由于要分三个部分分别处理,然后根据情况分别与“元”,“

5、角”,“分”及“整”相连接。连接的方式可以使用 CONCATENATE()函数,如公式二,也可以使用连接符。而用来连接,公式结构似乎会相对简单清晰一些,所以我选择了用来连接。虽然对问题进行了分解,但需要考虑的细节相当多。若单元格为 0 或者空,输出空,避免出现“零”、“零元”等字样。对非数字字符不进行处理,使用 EXCEL 自身的错误提示。对负数按正数处理,再用条件格式将其转换为红色,不拟采用“负XXXXXX”的形式。整数加“元”,若是纯整数,就只处理整数且加“整”,不再处理小数部分。若是纯小数,放在小数部分处理,不单独列出处理。角为 0 且分不为 0,应输出“零”,只有角的就加“整”如果有尾

6、数,即有 3 位以上小数(这种情况也许很少发生,但作为一个“通用”公式,却不能不考虑这种情况)。则有两种处理方式,一是截尾,另一则是四舍五入。由于两种方式的排它性。决定做两个公式。如果数值小于分,截尾公式输出空,而四舍五入公式则要考虑舍入问题。若有舍入输出分,没有则输出空。根据这个思路,我“组装”了下面两个公式。公式四:IF(A1=0,“,IF(ABS(A1)“0“),SUBSTITUTE(TEXT(INT(ROUND(ABS(A1),2),“DBNum2“),“万“,“万零“),TEXT(INT(ROUND(ABS(A1),2),“DBNum2“)而截断公式不用考虑尾数舍入问题,直接用 TRUNC()取万位和千位数来判断。相应地公式五的整数部分亦改为:IF(AND(RIGHT(TRUNC(ABS(A1)/10000)=“0“,RIGHT(TRUNC(ABS(A1)/1000)“0“),SUBSTITUTE(TEXT(TRUNC(ABS(A1),“DBNum2“),“万“,“万零“),TEXT(TRUNC(ABS(A1),“DBNum2“)为了一个我认为不是很必要的“零”字使公式臃肿了许多,而我喜欢简单清晰的公式,所以不愿在正式公式中采用。自认为这两个公式已经考虑了许多的细节,但我也不敢保证没有挂一漏万。现在暂时告一段落,若以后发现问题再来修改了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报