小议Excel大写金额

26 | 02 | 2015

这些日子在税务部实习,难免会接触到一些填写纳税综合申报表的问题。于是,就会遇到要将数字转化为大写金额的问题。

金额大写(成功)

如果是手工转换的话会比较繁琐,那么就会想到能不能让Excel自动完成这一工作呢。说干就干,上网搜解决方案,果然很多人问了这个问题,并且提供了好多解决方案,比如:

=TEXT(TRUNC(ROUND(G17,2),0),”[DBNUM2][$-804]G/通用格式”&”元”)&(IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),0))<0.01,””,IF(MIDB(ROUND(G17,2),IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),1))<0.01,(LEN(ROUND(G17,2))),(LEN(ROUND(G17,2))-1)),1)=”0″,”零”,TEXT(MIDB(ROUND(G17,2),IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),1))<0.01,(LEN(ROUND(G17,2))),(LEN(ROUND(G17,2))-1)),1),”[DBNUM2][$-804]G/通用格式”)&”角”)))&(IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),1))<0.01,”整”,TEXT(RIGHT(ROUND(G17,2),1),”[DBNUM2][$-804]G/通用格式”)&”分”))

但是待我满怀期待地COPY进公式后,却发现显示这个:

金额大写(失败)
仔细研究了下公式,发现公式中有中文,然后公司电脑用的是英文版的操作系统,Office也是英文版的,怀疑是不是因为英文版的Excel不支持中文。仔细研究一番后,将公式中的“G/通用格式”替换成“General”,大写金额就完美显示出来了,太棒了。

修正后的公式如下:

=TEXT(TRUNC(ROUND(G17,2),0),”[DBNUM2][$-804]General”&”元”)&(IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),0))<0.01,””,IF(MIDB(ROUND(G17,2),IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),1))<0.01,(LEN(ROUND(G17,2))),(LEN(ROUND(G17,2))-1)),1)=”0″,”零”,TEXT(MIDB(ROUND(G17,2),IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),1))<0.01,(LEN(ROUND(G17,2))),(LEN(ROUND(G17,2))-1)),1),”[DBNUM2][$-804]General”)&”角”)))&(IF((ROUND(G17,2)-TRUNC(ROUND(G17,2),1))<0.01,”整”,TEXT(RIGHT(ROUND(G17,2),1),”[DBNUM2][$-804]General”)&”分”))

金额大写(成功)

公式中的具体实现原理我就不给大家分析了,直接拿公式去用就好,需要注意的是,大家需要把公式中的“G17”修改成你需要显示成大写金额对应数字的单元格。