人民币金额大写自动转换公式 数字汉字大写


前言经常遇到搞财务的想把表格里的数字金额变为大写人民币的问题 , 在网上搜能找到有个很长很复杂的公式,复制过去直接用,逐个选择对应的单元格,细心点一般能搞定 。但当遇到金额小数点后面精确到分以下的位数时,拷来的公式可能会对金额的分值显示错误 , 不太靠得?。?裉焯峁┮桓龇浅<虻サ暮??迪终飧龉δ埽?对函数不懂的小白们也能轻松掌握 。
案例
上图B5单元格公式为从网上搜到的公式:
=IF(A5<=0,"",TEXT(INT(A5),"[dbnum2]¥G/通用格式")&"元"&IF(INT(A5*10)-INT(A5)*10=0,IF(INT(A5)*(INT(A5*100)-INT(A5*10)*10)=0,"","零"),TEXT(INT(A5*10)-INT(A5)*10,"[dbnum2]")&"角")&IF((INT(A5*100)-INT(A5*10)*10)=0,"整",TEXT((INT(A5*100)-INT(A5*10)*10),"[dbnum2]")&"分"))
最后的分值数值为3分 , 显示出来结果却为贰分,显然有问题 。其实将A列增加显示小数点位数可发现,A5单元格小数点后实际数值为.727 。所以公式得出贰分的原因为公式没有进行四舍五入 。修改公式为:
=IF(A5<=0,"",TEXT(INT(A5),"[dbnum2]¥G/通用格式")&"元"&IF(INT(A5*10)-INT(A5)*10=0,IF(INT(A5)*(INT(A5*100)-INT(A5*10)*10)=0,"","零"),TEXT(INT(A5*10)-INT(A5)*10,"[dbnum2]")&"角")&IF((INT(A5*100)-INT(A5*10)*10)=0,"整",TEXT((INT(ROUND(A5*100,0))-INT(A5*10)*10),"[dbnum2]")&"分"))
分值结果变为“叁分 ",其实到这里还没有完 , 这个公式没有考虑金额为负的情况,如果金额为负,会显示不出来 。为适应负值情况 , 继续修改公式为:
=IF(A5=0,"",IF(A5>0,TEXT(INT(A5),"[dbnum2]¥G/通用格式")&"元"&IF(INT(A5*10)-INT(A5)*10=0,IF(INT(A5)*(INT(A5*100)-INT(A5*10)*10)=0,"","零"),TEXT(INT(A5*10)-INT(A5)*10,"[dbnum2]")&"角")&IF((INT(A5*100)-INT(A5*10)*10)=0,"整",TEXT((INT(ROUND(A5*100,0))-INT(A5*10)*10),"[dbnum2]")&"分"),(TEXT(INT(A5),"[dbnum2]¥G/通用格式")&"元"&IF(INT(A5*10)-INT(A5)*10=0,IF(INT(A5)*(INT(A5*100)-INT(A5*10)*10)=0,"","零"),TEXT(INT(A5*10)-INT(A5)*10,"[dbnum2]")&"角")&IF((INT(A5*100)-INT(A5*10)*10)=0,"整",TEXT((INT(ROUND(A5*100,0))-INT(A5*10)*10),"[dbnum2]")&"分"))))
天哪,这公式也忒长了吧,连复制都不想弄了 。讲真,公式整到这个程度也难怪人不想用了 , 单单点击那些单元格就够麻烦的 。
简单方案为给大家提供一个简单的解决方法,本人编制了“金额汉字大写模块.bas”,通过插入模块引入自定义函数dxrmb(),函数名为大写人民币的拼音首字符,轻松解决数字变大写人民币金额 。如下图:
C5单元格公式:="¥" & dxrmb(A5),用法非常简单 。
我们在实际使用前,只需要知道如何将这个函数提前引入到表格就可以了 。引入方法也很简单:
按上图,点击开发工具下的Visual Basic,调出MVB编辑框 。点击文件——导入文件,选择“金额汉字大写模块.bas”打开 , 即完成引入 。
【人民币金额大写自动转换公式 数字汉字大写】