在Excel中制作人民币大写金额转换函数
我在用Excel进行财务统计时,将数值转换成人民币中文大写金额一般是采用将单元格格式自定义为"[dbnum2]&元"这种方法。但是在输入带有小数的数值时却出现了问题,比如在输入123.4的时候,变为"壹佰贰拾叁.肆元",这样子是不符合财务格式的,应该是"壹佰贰拾叁元肆角"才对。那么能不能在Excel中实现将任意数值转为人民币大写金额呢?
一、解决问题的思路
在Excel中自定义一个函数,该函数可以将任意数值转换为人民币大写金额。编制该函数代码时我是这样考虑:将输入的数值分为整数、十分位、百分位三个部分,将这几个部分单独转换为[dbnum2] 格式,再根据出现的各种可能和字符"元"、"角"、"分"进行组合。
二、自定义Excel函数
进入Visual Basic 开发环境,选择"插入→模块",在出现的代码窗口输入如下代码:
Function d(q)
ybb = Round(q * 100)
'将输入的数值扩大100倍,进行四舍五入
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]")
'将百分位转为中文大写
d = zy & "元"
If f <> 0 And j <> 0 Then
d = d & zj & "角" & zf & "分"
If y = 0 Then
d = zj & "角" & zf & "分"
End If
End If
If f = 0 And j <> 0 Then
d = d & zj & "角"
If y = 0 Then
d = zj & "角"
End If
End If
If f <> 0 And j = 0 Then
d = d & zj & zf & "分"
If y = 0 Then
d = zf & "分"
End If
End If
If q = "" Then
d = 0
'如没有输入任何数值为0
End If
End Function
三、函数的使用
例如要将123.45元转换为人民币大写金额,只需在单元格中输入"=d(123.45)",再按回车,即转换为"壹佰贰拾叁元肆角伍分"。
为了确保该函数能随时调用,我们需要将上述代码另存为名为"D",文件类型为"Microsoft Excel 加载宏"的文件,以后在使用时只需点击"工具→加载宏→D→确定"则可。
如果想在另外的电脑上使用该函数,可以将加载宏文件"D"复制到它们的Windows/Application Data/Microsoft/AddIns下,在使用时同样是点击"工具→加载宏→D→确定"。