分享

如何将小写金额转换为大写金额?这几个公式你至少要学会一个……

 Excel学习园地 2020-09-16
Excel基础学习园地
公众号“Excel基础学习园地”是一个免费发布Excel基础知识、函数应用、操作技巧、学习方法等资讯的公众号,请点击上方“Excel基础学习园地”添加关注,方便我们每天向您推送精彩资讯。

在会计做账的时候经常会用到大写金额,那么由小写金额如何转换为大写金额呢?在网上搜一下会发现这类公式有很多,有的还特别长,今天就整理了四个不同效果的公式与大家分享,先来看一下四个公式带来的不同效果:

前三个公式只考虑金额大于零的情况,第四个公式考虑到金额小于零的情况;第二个公式和第四个公式显示比较符号实际需要,接下来就让我们逐个分析这四个公式的思路。

1
 =TEXT(INT(A2),"[DBNUM2]")&"元"&TEXT(MID(A2,LEN(INT(A2))+2,1),"[DBNUM2]D角")&TEXT(MID(A2,LEN(INT(A2))+3,1),"[DBNUM2]D分")&"整"

公式一的显示效果为:

这个公式整体结构比较好理解,使用了三个text,分别将金额的整数部分(元)、第一位小数(角)和第二位小数(分)提取出来,再指定对应的大写格式。

公式涉及到四个基本函数:text、int、mid和len,这几个函数在之前的文章都有讲解,自己看看帮助或者百度也很容易理解,就不过多解释了。

如果不要求最后必须有个“整”字的话,仅仅是金额转为大写,这个公式非常方便。

2
 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(NUMBERSTRING(INT(A2),2)&"元"&TEXT(MOD(A2,1)*100,"[dbnum2]0角0分"),"零角零分","整"),"零角","零"),"零分","")

公式二的显示效果为:

这个公式使用了三个SUBSTITUTE函数进行嵌套,同时用到了NUMBERSTRING这个隐藏函数,再就是int、text和mod函数,我们来分析一下公式的整体思路:

公式的核心部分是:NUMBERSTRING(INT(A2),2)&"元"&TEXT(MOD(A2,1)*100,"[dbnum2]0角0分")

这里还是把金额分成两部分,NUMBERSTRING(INT(A2),2)是利用了int将金额的整数部分提取出来,使用NUMBERSTRING函数转为大写,关于这个函数的用法可以参考:Excel隐藏函数 NUMBERSTRING

后一部分是把金额的小数部分提取出来,利用text指定为大写格式,MOD(A2,1)是用来提取一个数字的小数部分,有兴趣的朋友可以自己试试。

我们看看经过这样处理后显示的效果:

其实这一步之后,已经大体上实现了大写金额的转换,只是会出现"零角零分"、"零角"、"零分"之类的字眼,因此使用三次SUBSTITUTE函数进行替换,关于这个函数可以参考:SUBSTITUTE函数和REPLACE函数批量替换的区别

就整体效果而言,这个公式也比较容易理解,同时转换结果也比较通用,值得一用。

3
 =RIGHT(TEXT(A2*100,"[DBNUM2]0仟0佰0拾0万0仟0佰0拾0元0角0分整"),LEN(A2)*2+IF(ISERR(FIND(".",A2)),5,IF(LEN(A2)-FIND(".",A2)=1,1,-1)))

公式三的显示效果为:

这个公式又采用了另一个思路,核心部分是:TEXT(A2*100,"[DBNUM2]0仟0佰0拾0万0仟0佰0拾0元0角0分整")

这部分公式的效果为:

先对金额扩大100倍,变成一个整数,再用text在对应的数字后面加上单位。

之后使用right函数将这个结果进行截取,我们知道,right这个函数是将指定数据从右边的若干位进行截取,公式三在确定right的第二个参数也就是截取的位数上下了一番功夫:LEN(A2)*2+IF(ISERR(FIND(".",A2)),5,IF(LEN(A2)-FIND(".",A2)=1,1,-1))这么长的一段就是为了确定截取几位字符,在上一步使用text给金额的每一个数字都增加了一个单位,所以使用LEN(A2)*2将实际截取的字符长度加倍,后面的if是考虑到数据是不是有小数点的情况,分别计算需要截取的长度,主要利用的len和find函数,采用了根据特定内容确定长度的常规思路。

整体而言,公式三采用的是字符提取的思路,关于这个思路,是一类比较典型的函数嵌套用法,今后会有专门的讨论,就不过多解释了。

4
 =IF(ROUND(A2,2)=0,"",IF(A2<0,"负","")&if(abs(a2)>=1,TEXT(INT(ROUND(ABS(A2),2)),"[dbnum2]")&"圆","")&SUBSTITUTE(SUBSTITUTE(TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零角",IF(A2^2<1,,"零")),"零分",""))

公式四的显示效果为:

主题思路是利用if函数,当金额为零的时候显示空白,金额小于零的时候前面加“负”字,之后又根据金额的绝对值(ABS函数)是否大于1分别进行转换,起核心还是使用了text函数,同时结合了前面几个公式的思路,分别用到了SUBSTITUTE和right函数,公式看起来长,其实理解起来不是很难,就不一一解释了。

网上还有一些更为复杂的公式,因为考虑的需求点更多,大体上都是公式四这个模式,关于金额大写的公式,对于初学者来说,根据自己的需求,在以上四个公式中应该可以找到适用的,只要修改对应的单元格就行,相对于一些数组公式来说,套用起来还是比较容易。

在学习的角度来说,这几个公式思路各有不同,核心都离不开text这个函数,无非是在一些细节方面进行了各种加工修饰,相信通过以上的解释,应该有助于公式的理解,如果还是觉得困难的话,那就需要来【老菜鸟的班】强化一下你的公式函数基础知识了。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多