excel小写数字转换为大写金额(负数的数字转换成大写金额)
大家好,在财务上我们经常会将小写的金额转换成大写的金额,利用EXCEL的单元格格式或是内置的函数都只能针对整数部分进行转换,如果遇到有多位小数、整数、负数等混合的数据,上面两种办法都无法实现,今天我们使用组合函数的方式来解决这一问题。
本案例中多位小数采用的是四舍五入原则。
先来拆解函数公式,将输入的数字分为整数和小数部分,先看整数部分:
函数公式:TEXT(INT(ABS(A3)),"[DBNUM2]")&"元"
函数公式的意思:先将数字转换成正数,然后取出整数部分,用TEXT函数转换成大写数字,后面添加元,遇到负数的情况,还得再处理。
修改函数公式,在前面添加IF判断条件,如果数字小于0,则在前面添加“负”字。
接下来是小数部分的转换
函数公式:TEXT(MOD(A3,1)*100,"[DBNUM2]0角0分")
函数意思:使用MOD求余函数,让数字除以1得到它的余数也就是小数部分,使用函数TEXT将其转换成大写数字,面对负数的时候,这个公式也有问题,负数求余,除数应该修改为“-1”。
于是修改函数公式:SUBSTITUTE(IF(A3<0,TEXT(MOD(A3,-1)*100,"[DBNUM2]0角0分"),TEXT(MOD(A3,1)*100,"[DBNUM2]0角0分")),"-","")
函数公式意思:先用IF条件判断,如果小于1的数字,则MOD函数的除数是“-1”,否则就是“1”,由于负数的MOD余数也是负数,需要用SUBSTITUTE函数将前面的符号“-”去除。
观察下表格里的小数部分的转换情况,里面的“零角零分”“零角壹分”“壹角零分”都是书写不规范的,需要替换掉。
有三种情况需要替换,故使用了三次“SUBSTITUTE”函数。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(A6<0,TEXT(MOD(A6,-1)*100,"[DBNUM2]0角0分"),TEXT(MOD(A6,1)*100,"[DBNUM2]0角0分")),"-",""),"零角零分","整"),"零分","整"),"零角","零")
最后将整数和小数部分的函数合在一起,组成完整的函数公式“=IF(A3<0,"负","")&TEXT(INT(ABS(A3)),"[DBNUM2]")&"元"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(A3<0,TEXT(MOD(A3,-1)*100,"[DBNUM2]0角0分"),TEXT(MOD(A3,1)*100,"[DBNUM2]0角0分")),"-",""),"零角零分","整"),"零分","整"),"零角","零")”。
函数公式比较长,理解起来其实也不难,不想理解的,直接拿去套用即可。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com