多语言展示
当前在线:1388今日阅读:2今日分享:38

Excel金额小写转大写金额公式解说

一般我们在用函数时都是挑选、抄录别人的公式,只停留在照搬照抄的层面,完全没有自己的东西------用得很顺手,但什么也不知道!一旦问题发生了小变化,就没澈了。其根本的原因是:大虾们提供了解决问题的函数公式,但没有提供对公式的解释。菜鸟们终究只能是“制造”,无法实现从制造到“创造”的转变,悲哀!       人民币小写金额转中文大写金额的函数公式网上都有很多,下面一个我认为算得上经典公式之一。此前只知道这个公式很是实用,并不知道其中的思维妙用,弄了好长一断时间才慢慢弄懂,相信还有很多人像我一样一头雾水。今天就以它为例作一番解释。
方法/步骤
1

以此图为事例

2

公式一、人民币大写规则的函数公式:=SUBSTITUTE(SUBSTITUTE(IF(A1>-0.5%,,'负')&TEXT(INT(ABS(A1)+0.5%),'[dbnum2]G/通用格式元;;')&TEXT(RIGHT(FIXED(A1),2),'[dbnum2]0角0分;;'&IF(ABS(A1)>1%,'整',)),'零角',IF(ABS(A1)<1,,'零')),'零分','整')

3

公式二、人民币求和大写规则函数公式:='人民币(含税17%):'&IF((SUM(D2:D5)-INT(SUM(D2:D5)))=0,TEXT(SUM(D2:D5),'[DBNUM2]')&'元整',IF(INT(SUM(D2:D5)*10)-SUM(D2:D5)*10=0,TEXT(INT(SUM(D2:D5)),'[DBNUM2]')&'元'&TEXT((INT(SUM(D2:D5)*10)-INT(SUM(D2:D5))*10),'[DBNUM2]')&'角整',TEXT(INT(SUM(D2:D5)),'[DBNUM2]')&'元'&IF(INT(SUM(D2:D5)*10)-INT(SUM(D2:D5))*10=0,'零',TEXT(INT(SUM(D2:D5)*10)-INT(SUM(D2:D5))*10,'[DBNUM2]')&'角')&TEXT(RIGHT(SUM(D2:D5),1),'[DBNUM2]')&'分'))&'(¥'&SUM(D2:D5)&'元)'

4

以上公式分解如下:      1、这个公式中用了SUBSTITUTE()、IF()、TEXT()、INT()、ABS()、RIGHT()、FIXED()七个函数,其中TEXT()函数的两次使用都是运用了高级应用,这也是本公式最难看懂的地方,另个为了符合人民币的读数规则;两次使用了SUBSTITUTE()对出现不符合读数规定的字符用有效字符替换,这一点也很重要。      2、本题的基本思路是:一是用IF函数判断需要转换数据的正、负(如果是正数就不用在数值前显示“正”,负则必须显示“负”字);二是用ABS函数对数据源数值进行求绝对值,然后用IND函数对这个绝对值截取整数部分的数值,再把整数部分的数值交由TEXT函数转换成中文大写;三是对小数部分的数值处理,通过用FIXED函数对源数据进行四舍五入保留2位有效数字并用文本显示,然后用RIGHT函数将显示的文本从右边截取两位数值(即保留的小数位数据),再把这两位数交由TEXT函数转换成中文大写;四是人民币大写最后有个“整”字也补上。最后把一至四的结果用“&”连接成一个完整的文本内容,把这个连接的文本交由SUBSTITUTE函数替换两次,第一次让其把连接文本中出现不合规读法字“零角”用“零”替换,第二次“零分”用“整”替换。最终实现小写到大写的完整转换。      3、细节疑问解释:    ①、IF(A1>-0.5%,,'负')。因为-0.5%=-0.005(即5厘钱或半分,但人民币只保留分位),A1>-0.5%即是A1的值小于5厘,会被四舍五入舍去,如果A1>-0.5%为真,也就是A1是大于或等于0时,显示“空白”,否则显示“负”字;    ②、为什么INT(ABS(A1)+0.5%)中要加0.5%?这是为了把数据源A1的千分位上大于或等于5(即5厘钱)及时进位,便于INT函数截取整数的数据正确(即是四舍五入后的整数);    ③、TEXT函数的第二个参数'[DBNum2]G/通用格式元;;'和'[dbnum2]0角0分;;'  。这是对TEXT函数的高级应用,第二个参数是使用了“条件格式”。基本形式是:TEXT(数据源,'[条件1]显示格式;[条件2]显示格式;否则显示格式;文本显示格式')。对照两个第二个参数可知,都是用了条件1且条件都是[DBNUM2](即小写转为中文大写)。但是显示格式不同,前一个是“G/通用格式”并且加了个“元”字,相当于单元格设置中的“常规”并对转换后数字补添整数位单位“元”;后一个是“0角0分”,这个0在这里不是数字0,而是占位符,由两位小数数字依顺序对应填入,这点菜鸟最容易弄错!还有就是显示格里的两个分号(;;)。根据TEXT函数高级的基本形式,第二个参数有4个显示格式,是用“;”分隔的(共三个;),例中都是用了条件1,本来后面应有三个“;”,为何只有两个而少一个呢?原来仅用条件1时,它包含了大于和等于0两个条件(即包含条件1和条件3)。

5

下面再提供一个符合人民币大写规则的函数公式:=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(-RMB(A1,2),TEXT(A1,';负')&TEXT(INT(ABS(A1)+0.5%),'[dbnum2]G/通用格式元;;')&TEXT(RIGHT(RMB(A1,2),2),'[dbnum2]0角0分;;整'),),'零角',IF(A1^2<1,,'零')),'万',IF(AND(MOD(ABS(A1%),1000)<100,MOD(ABS(A1%),1000)>=10),'万零','万')),'零分','整')

注意事项
1

函数里面的标点符号需要在英文模式下输入。

2

函数大写金额并不只是这两种,所以请大虾不要一点概面,谢谢!

推荐信息