|
手把手教你转换出中文大写金额(转贴,与大家分享)
http://www.officefans.net/cdb/viewthread.php?tid=12035
大家在使用Excel的时候,是否会遇到要把一个或一些阿拉伯数字转换成中文大写金额的计算要求呢?如果只是偶尔需要对少数几个数字进行转换,干脆手工操作啦,但如果要进行转换的数字较多或经常要转换时,该怎么办呢?一向无往不胜的Excel能为你做些什么呢?其实,这个不难,最少有三种方法可以实现。
一、 设置单元格格式:
用这个办法能直接将阿拉伯数字转换成中文大写金额,而且操作简单。右击需要转换的单元格,在弹出的快捷菜单中选择“单元格格式”,然后在“数字”选项卡中选择“自定义”,在“类型”中写入“[DBNum2]G/通用格式"元"”后按确定即可。瞧,321是不是已经变成了“叁佰贰拾壹元”了?
可惜的是,这个办法只能处理整数,而对带有小数的数字无能为力。当然也有过朋友通过对此法进行一定的扩展而可以处理部分带小数的数字,但效果不是很理想。
二、 利用中文大写金额转换函数:
先别急,这个函数你在Excel里是找不到的,微软毕竟不是大陆公司!这个函数被收集在本站开发的“Excel扩展函数集”里,下载这个函数集,按说明进行安装后,在Excel中运用一个叫EHDXRMB()的函数就可以将任意数字转换成中文大写金额。具体情况在此就不多进行介绍了。
三、 利用公式进行转换:
所谓“自力更生,丰衣足食”,这第三种方法就是自己编写公式进行转换。虽然吝啬的小编连白开水也舍不得给我,但我还是一如既往地发扬大公无私之精神将独门密技告之天下,包学包会,不会免费再学……(小编 :STOP!再要是废话就OUT!)
为了照顾一些Excel初学者,我们先来了解一下什么是Excel里的公式与函数。Excel之所以计算功能异常强大,百分之八十的功劳就在于用户可以创建公式进行计算。所谓公式,实际上就是一个计算表达式(通常是包含函数与单元格引用的计算表达式)。在Excel里,以“=”作为公式的标志,在任何一个非文本值类型的单元格内,只要以“=”开头,就必定是Excel公式,举一最简单的例子:如果A1、B1单元格的值为别为1和2,那么如果在C3单元格内输入“=A1+B1”,则Excel会自动将A1和B1的值相加,得到数值3,再返回给C3单元格。
再来说函数,函数其实就是包装好的公式,它能根据你提供的参数自动进行复杂的计算,从而最大限度地减轻你的工作量。Excel内置了大量具备各种功能的函数,而且Excel还允许用户自己添加函数(就像第二种方法中笔者写的那个),这样一来,在Excel里几乎没有计算不出来的东西了。拿Excel中较常用到的SUM函数来说,如果要计算从A1到A100单元格的数值总和,写公式时是用不着写成“=A1+A2+A3+……A100”的,而只是简单地写成“=SUM(A1:A10)”就可以了。
Excel中有上百种函数,今天我们只讲我们将要用到的几个。其实所有这些函数的功能及详细用法在Excel帮助文件里都有介绍,当你遇到具体计算要求时,只要你点击常用工具栏中“粘贴函数”按钮,Excel会将所有的函数一一展示在你眼前,结合相应的帮助文件,你可以迅速挑选到一个适合你的函数。
1、IF函数
这是Excel里最常用到的函数之一,它的功能是执行真假值判断,根据逻辑测试的真假值返回不同的结果。其语法为IF(判断表达式,当条件值为真时返回的值,当条件值为假时返回的值)。通俗地说,就是“如果……就……否则”的语法结构。比如A1单元格内为学生成绩,我们现在要在B1单元格计算此成绩是否及格,则公式为“=IF(A1<60,"不及格","及格")”,这样一来,如果A1的数值小于60,B1就会显示“不及格”,否则就显示“及格”,是不是挺简单?IF函数是允许嵌套的,也就是说IF函数里面还可以有IF函数,这样就可以执行比较复杂的判断了。
2、TRUNC函数
这个函数可以截去指定位数的小数,如果将小数部分全部截去,就可以得到一个整数。要注意,截去是指直接舍弃,而不是四舍五入。比如A1单元格为21.147,要想在B1单元格内将它转换为只有两位小数的数字,则公式为“=TRUNC(A1,2)”,计算结果为21.14。
3、文本函数
文本函数是一系列对文本进行截取、合并、查找、转换等操作的函数。下面简单介绍一下下文中将用到的几个:
A、LEN函数,用来计算指定文本的字符数,任何字符都将被计数,包括字母、数字、标点符号甚至空格。如“LEN("Excel Home")”等于10。
B、LEFT函数,可以从文本字符串的左边开始截取指定长度的文本,如“LEFT("Excel Home",5)”等于“Excel”。
C、RIGHT函数,这个函数的功能与LEFT函数相似,只不过它是从右边开始截取文本的。如“RIGHT("Excel Home",4)”等于“Home”。
D、MID函数,这个函数还是用来截取文本的,但方式与上两种都不同,它是从指定的位数开始截取指定长度的文本。“MID("Excel Home",2,4)”等于“xcel”。
E、&函数
实际上这个函数的全称应该是CONCATENATE,只不过这个名字太长不容易记住,所以干脆就叫做&.函数,它的功能是将几个文本连结起来。比如“"电脑"&"界"&"应用"&"文萃"”等于“电脑界应用文萃”。
咳咳——(笔者一阵咳嗽),大家看到这里可能要觉到有些枯燥了,但所谓“磨刀不误砍柴功”,如果你不先掌握这些基础知识,待会儿我开始讲如何转换中文大写金额时,你可要傻眼了!不过也别急,就剩下一个函数要讲解了!好了,继续!
F、TEXT函数
这个函数其实也是一个文本函数,但因为在转换中文大写金额时这是一个起关键作用的函数,而在Excel帮助中又未详述,所以要着重介绍一下。
TEXT函数可以将一数值转换为按指定数字格式表示的文本,比如是否带千分号,显示几位小数,是否带货币符号,还有日期,时间等等。当然,最重要的是它可以将数值转换为中文大写,虽然不能直接将阿拉伯数字转换为中文大写金额,但已经足够了。
TEXT的语法是TEXT(目标数值,格式),这个格式的种类及写法与单元格格式中数字选项卡中显示的相同。如TEXT(100.1,"0.00")=100.10。注意,任何数值只要被TEXT函数转换过,不单单是显示格式被改变了,内容也彻底变成了文本,不能再参与计算了。要将数值转换为中文大写,应该在函数中用“[DBNum2]”格式参数,这是在Excel帮助中没提到的一个参数,但却非常实用!
好了,刀我们就先磨到这里,下面我们开始砍柴!
首先,我们要分析一下计算要求——在进行较复杂的公式创建之前,这是非常必要的一个步骤,就好像写论文前要先列好提纲一样,一定要先有好的规划,才能有好的解决方案。我们已经知道,TEXT函数只能简单地把数字转换为中文大写,而且只适合于整数,这也就是说,需要我们将目标数值分成元、角、分三段来转换,然后再用&函数拼接在一起。标准的货币型数值包含两位小数,因为目标数值是未知的,所以我们首先要将要转换的数值转换成"0.00"的格式,比如“588.1”,我们要把它转换为“588.10”,这样才便于后面进行分段转换。还有一点要注意的地方是目标数值可能不只两位小数,这时我们就要截掉多余位数的小数(是截掉,可不是取整哟,不然的话,1.998可要变成2.00了!)
下面进行分段转换,我们先假设一个某工作表中C2单元格中存在一个需要转换的目标数值:5188.15,则各段计算公式分别为:
各部分转换值
整数部分
=TEXT(TRUNC(C2),"[DBNUM2]")&"元"
角位
=TEXT(MID(C2,LEN(TEXT(TRUNC(C2,2),"0.00"))-1,1),"[DBNUM2]")&"角"
分位
=TEXT(RIGHT(TEXT(TRUNC(C2,2),"0.00"),1),"[DBNUM2]")&"分"
角分位
=D6&D7
我们把以上公式分别输入到D5到D9单元格中,计算结果为:
各部分转换值
单元格
整数部分
伍仟壹佰捌拾捌元
D5
角位
壹角
D6
分位
伍分
D7
角分位
壹角伍分
D8
会不会觉得公式太长?对了,Excel的函数都是允许嵌套的,但无论怎么嵌套,都有其固定的计算顺序——与四则混合运算的计算顺序一样,先算最里头的一个括号,先乘除,后加减(逻辑函数例外)。按照这个规则,再加上我在前面已经把要用到的函数一一为大家进行了介绍,相信稍稍动动脑筋就能明白。万一暂时难以理解也别着急,待一会儿在Excel里亲自试试就明白了。
好了,已经成功一半了,下面的工作是把分段转换好的中文大写金额连结起来,可别小看这个过程,这比刚才的工作要难得多!
对于需要进行转换的数值,可能会有如下几种类型:
一、 零
二、 整数
三、 既有小数部分又有整数部分的有理数
1、 只有一位小数
2、 两位以上小数,但第一位为零
四、 纯小数
1、 只有一位小数
2、 两位以上小数,但第一位为零
对于不同的类型,连结方式是不同的,不然就会出现“零元”、“零角”、“零分”以及其他一些不符合中文大写金额规则的连结结果。那样的话就前功尽弃了。所以我们在分段转换时不必考虑的这些问题在连结的时候就要好好考虑清楚了。现在IF函数要大派用场了,只有它才能进行严密的判断,并根据判断的情况进行相应的连结。
以目标数值5188.1在C2单元格为例,我们先列表说明要进行哪些判断。在以后需要进行较复杂的判断工作之前,建议大家也能这样做,这样有助于保持清醒的头脑以组织条理分明的语句。
判断公式
是否为零
=IF(TRUNC(C2,2)=0,TRUE,FALSE)
是否只有整数部分
=IF(TRUNC(C2,2)=TRUNC(C2),TRUE,FALSE)
是否没有整数部分
=IF(TRUNC(C2)=0,TRUE,FALSE)
是否只有角位
=IF(RIGHT(TEXT(TRUNC(C2,2),"0.00"),1)="0",TRUE,FALSE)
是否只有分位
=IF(MID(C2,LEN(TEXT(TRUNC(C2,2),"0.00"))-1,1)="0",TRUE,FALSE)
我们把以上公式分别输入到D11到D15单元格中,判断结果如下表所列:
目标数值:5188.1 判断结果
单元格
是否为零
FALSE
D11
是否只有整数部分
FALSE
D12
是否没有整数部分
FALSE
D13
是否只有角
TRUE
D14
是否只有分
FALSE
D15
TRUE表示判断结果为真,FALSE则为假。
好了,最后,我们要综合以上各项判断结果来写出这个连结的公式:=IF(D11,"数值为零",IF(D12,D5&"整",IF(D13,IF(D14,D6&"整",IF(D15,D7,D8)),IF(D14,D5&D6&"整",IF(D15,D5&"零"&D7,D5&D8)))))。
好了,现在往C2单元格中输入任意一个数字,看看是否能正确转换出中文大写金额来?本文的侧重点在于告诉大家用怎样的思路来解决问题,所以讲解过程可能有些繁杂,而且整个转换过程用到了十几个单元格一步一步进行求解。这在实际工作中当然是不必要的。不过在对复杂问题进行计算时,用到的公式数量是于公式复杂程度成反比的,在大家对公式的运用还不是那么熟练的时候,多用几个单元格来创建公式也无妨,只要思路正确,最终结果肯定错不了!当逐渐掌握公式及各种函数的用法后,就可以用最少的单元格(也就是最复杂的公式)来快速完成计算要求了。
最后还有两个地方要提醒大家:
1、 Excel的公式中对函数的嵌套次数是有限制的,这就意味着有时候不得不用到一个以上的单元格来创建公式。就好像本文的转换工作,用一个公式是算不出来的,因为要嵌套的层数太多!一个不行,我们可以用三个!设计思路完全相同,自己做做看!(在本人网站上有示范工作簿文件下载!)
2、 Excel的公式是不认识全角的标点符号的,所以大家在创建公式的时候务必将输入法切换到半角下(尤其是输入引号的时候),不然Excel会认为公式有错误哟!
各位朋友(笔者望着小编递过来的一杯热气腾腾的牛奶,激动起来),希望根据本文的介绍,您以后不但能会转换中文大写金额,更重要地是要会熟练运用Excel的公式,以完成其他更复杂的计算要求,遇到不明白的地方,首先看帮助文件,这可是最好的Excel教材,不要白白浪费了!
*点击此处下载示范工作簿与WORD原文0cm"> |
|