财务经理人网|财智东方.财务经理人网-致力于财务管理实践、打造卓越财务经理人!

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: 夜空星辰 - 

Excel金额大小写转换【自定义函数】

[复制链接]

412

主题

2011

帖子

4902

积分

管理员

Rank: 15Rank: 15Rank: 15

积分
4902
发表于 2009-12-10 15:47:00 |显示全部楼层 | 阅读模式

马上注册,结交更多财务经理人,享用更多功能,成就财务总监之路……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

下面代码放入VBA里就可以了。

Function rmbdx(value, Optional m = 0)
On Error Resume Next
Dim a
Dim jf As String '定义角分位
Dim j '定义角位
Dim f '定义分位
If value < 0 Then '处理正负数的情况
a = "负"
Else
a = ""
End If

If IsNumeric(value) = False Then '判断待转换的value是否为数值
rmbdx = "需转换的内容非数值"
Else
value = Abs(CCur(value))
'当参数m不输入(默认为0)或为0时,小数点后的第三数不进行四舍五入处理
'当参数m为1或其它数值时,小数点后的第三数进行四舍五入处理
If m = 0 Then
jf = Fix((value - Fix(value)) * 100)
value = Fix(value) + jf / 100
Else '厘位进行四舍五入实践很少用到,但还是要照顾到
value = Application.WorksheetFunction.Round(value, 2) '-->这句是关键!只用round有bug
jf = Round((value - Fix(value)) * 100, 0)
End If
If value = 0 Or value = "" Then '当待转换数值为0或空时,不进行转换
rmbdx = ""
Else
strrmbdx = Application.WorksheetFunction.Text(Int(value), "[DBNum2]") & "元" '转换整数位
If Int(value) = 0 Then
strrmbdx = ""
End If
If Int(value) <> value Then
If jf > 9 Then '判断小数位
j = Left(jf, 1)
f = Right(jf, 1)
Else
j = 0
f = jf
End If

If j <> 0 And f <> 0 Then '角分位都有时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角" _
& Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
Else
'处理出现零几分的情况
If Int(value) = 0 And j = 0 And f <> 0 Then
jf = Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
Else
If j = 0 Then '有分无角时
jf = "零" & Application.WorksheetFunction.Text(f, "[DBNum2]") & "分"
Else
If f = 0 Then '有角无分时
jf = Application.WorksheetFunction.Text(j, "[DBNum2]") & "角整"
End If
End If
End If
End If
strrmbdx = strrmbdx & jf '组装
Else
strrmbdx = strrmbdx & "整"
End If

rmbdx = a & strrmbdx '最后成型了,各位MM满意了吧
End If
End If
End Function




Excel金额大小写转换公式

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部