| « | February 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | |
|
| Blog信息 |
|
blog名称:我思集 日志总数:38 评论数量:393 留言数量:-1 访问次数:624807 建立时间:2005年3月29日 |

| |
[软件心得]Excel大写中文金额转换函数
yth 发表于 2006/4/30 12:48:30 |
|
网上有不少关于如何把金额转换成大写中文的例子。有些是用公式,有些用VBA自定义函数。我发现有些用公式的转换的结果很好,可是使用总觉得不便。而用VBA的没找到转换很好的例子,于是参考网上的一些例子进行了修改。
源程序如下:
Function dx(q) ybb = Application.WorksheetFunction.Round(q * 100, 0) '利用Excel函数 'ybb = Round(Abs(q) * 100, 0) 'VBA函数与Excel函数对舍入算法有些不一样 dx = IIf(ybb < 0, "负", "") '符号 ybb = Abs(ybb) y = Int(ybb / 100) '元 j = Int(ybb / 10) - y * 10 '角 f = ybb - y * 100 - j * 10 '分 zy = Application.WorksheetFunction.Text(y, "[DBNum2]") '大写元 zj = Application.WorksheetFunction.Text(j, "[DBNum2]") '大写角 zf = Application.WorksheetFunction.Text(f, "[DBNum2]") '大写分 If y <> 0 Then dx = dx & zy & "元" If j <> 0 Then dx = dx & zj & "角" If f <> 0 Then If y <> 0 And j = 0 Then dx = dx & "零" dx = dx & zf & "分" Else If y <> 0 Or j <> 0 Then dx = dx & "整" End IfEnd Function
关于Round函数在不同环境中的区别,可以参看微软的两篇文章:
PRB: Round Function different in VBA 6 and Excel Spreadsheet
How To Implement Custom Rounding Procedures |
|
| 回复:Excel大写中文金额转换函数
泡猫的老鼠(游客)发表评论于2008/11/17 12:05:02 |
|
| 回复:Excel大写中文金额转换函数
Patrick(游客)发表评论于2008/3/12 17:06:51 |
|
还有一点漏洞,应改为:
=IF(LEFT(A1)="-",REPLACEB("-",1,1,"(负)"),"")&IF(ABS(ROUND(A1,2))<1,SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(RIGHT(TRUNC(ROUND(A1,2)*10,0)),"[dbnum2]")&"角"&TEXT(RIGHT(TRUNC(ROUND(A1,2)*100,0)),"[dbnum2]")&"分","零角零分",""),"零角",""),"零分","整"),TEXT(INT(ROUND(ABS(A1),2)),"[dbnum2]")&"元"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(RIGHT(TRUNC(ROUND(A1,2)*10,0)),"[dbnum2]")&"角"&TEXT(RIGHT(TRUNC(ROUND(A1,2)*100,0)),"[dbnum2]")&"分","零角零分","整"),"零角","零"),"零分","整")) |
|
| 回复:Excel大写中文金额转换函数
amwdhjy(游客)发表评论于2007/8/18 20:02:44 |
|
=IF(LEFT(A1)="-",REPLACEB("-",1,1,"(负)"),"")&IF(ABS(ROUND(A1,2))<1,SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(RIGHT(TRUNC(ROUND(A1,2)*10,0)),"[dbnum2]")&"角"&TEXT(RIGHT(TRUNC(ROUND(A1,2)*100,0)),"[dbnum2]")&"分","零角零分",""),"零角",""),"零分","整"),TEXT(INT(ROUND(A1,2)),"[dbnum2]")&"元"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(RIGHT(TRUNC(ROUND(A1,2)*10,0)),"[dbnum2]")&"角"&TEXT(RIGHT(TRUNC(ROUND(A1,2)*100,0)),"[dbnum2]")&"分","零角零分","整"),"零角","零"),"零分","整")) |
|
| 回复:Excel大写中文金额转换函数
119(游客)发表评论于2006/9/15 23:09:28 |
|
| 回复:Excel大写中文金额转换函数
瓢虫(游客)发表评论于2006/5/14 9:50:03 |
| » 1 »
|