如下图,财务人员的许的表格中,要求将金额转换为大写。取N的整数部分,如int(3.14),结果为3,不会进行四舍五入。截取S最右边的L个符号,如right("abcd", 2),结果为cd。如果L的值大于S的长度,则截取整串文本。对数字A保留N位小数,并进行四舍五入。如round(3.14159, 2),结果为3.14,再如round(567.558, 2),结果为567.56。如文章开头的图片中,要根据B4单元格的值,正确读出人民币大写金额,需要按如下逻辑进行组织:=IF(INT(B4)=B4, 按整数读金额, 按小数读金额)
INT(B4)=B4表示B4的整数部分等于B4,意味着这个数其实没有小数,那么,它一定是一个整数。当然,这只是个框架,现在还不能直接使用,接下来继续一步步推导分析。TEXT(B4, "[DBNum2]G/通用格式元整")
如果所有的金额都是整数,那么直接采用第4步的公式就能解决问题,但现实情况是:金额一般都带有小数。TEXT(INT(B4), "[DBNum2]G/通用格式元")
其中INT(B4)是指取B4的整数部分,TEXT实现将它转换为中文大写数字。但是,其格式代码末尾没有“整”字,因为后面还有角和分。TEXT(RIGHT(ROUND(B4,2), 2), "[DBNum2]0角0分")
ROUND(B4,2):将金额保留2位小数,并进行四舍五入,如此可以确保金额一定是2位小数。RIGHT(ROUND(B4,2), 2):截取金额最右边的2位数字,即金额的小数部分。最后,将这个小数部分按0角0分的格式并转换为中文大写的方式输出。TEXT(INT(B4), "[DBNum2]G/通用格式元") & TEXT(RIGHT(ROUND(B4,2), 2), "[DBNum2]0角0分")
公式中,&前面是整数部分的读法,&后面是小数部分的读写,拼接起来就是一个完整小数的读法。现在,我们有了金额是整数时的读法公式,也有了金额是小数时的读法公式,现在将它们替换掉原来的IF公式框架中对应的部分就好了,得公式如下:=IF(INT(B4)=B4, TEXT(B4, "[DBNum2]G/通用格式元整"), TEXT(INT(B4), "[DBNum2]G/通用格式元") & TEXT(RIGHT(ROUND(B4,2), 2), "[DBNum2]0角0分"))
如果实在觉得难以理解和编写,你完全可以复制上面的最终公式,然后将B4替换成你需要转换的单元格就可以啦。