五、Excel中将数字转换成中文大写
对于用EXCEL来处理日常统计报表的财务人员来说,一个最令人头痛的问题,就是如何将表示金额的阿拉伯数字转换成中文大写形式。
这里给出将阿拉伯金额数字转换成中文大写形式的两种方法:内置函数法、自定义函数法,供参考。
(一)内置函数法
如图1所示,来将C12单元格中的数值转换为中文大写形式,并将结果保存在D12单元格中。
1、分别选中E13、F13、G113单元格,依次输入公式:=TEXT(INT(ABS(C12)),"[DBNum2]")、=TEXT(INT(ABS(C12*10))-INT(ABS(C12))*10,"[DBNum2]")、=TEXT(INT(ABS(C12*100))-INT(ABS(C12*10))*10,"[DBNum2]")。
公式含义解析:分别确定统计结果的元、角、分的数值,并将其转换为中文大写格式。
2、选中E10单元格,输入公式:=E13&"元"&F13&"角"&G13&"分",或者:=CONCATENATE(E13,"元",F13,"角",G13,"分")。
公式含义解析:将E13至G13单元格中的文本组合为一个整体,并在相应位置加上单位“元、角、分”文字。
3、再次选中E12单元格,执行“格式→条件格式”命令,打开“条件格式”对话框(如图1)。按“条件1”下面的下拉按钮,选中“公式”选项,在后面的方框中输入“=$C$12<0”(如图2),再按“格式”按钮,在随后弹出的“单元格格式”对话框中(如图3),将“字体”颜色设置为红色,确定退出。
4、选中C12单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图4),切换到“数字”标签下,选中“分类”下面的“货币”选项后,再选中右边“负数”下面的红色选项,确定退出。
注意:经过以上两步操作后,当C12中的数值小于零时,大、小写结果均以红色显示,与财务要求相一致。
5、选中13行,右击鼠标,在随后弹出的快捷菜单中,选“隐藏”选项,将13行隐藏起来,不影响正常打印效果。
至此,转换工作结束,效果参见图1所示。
(二)自定义函数法
显然上面的转换方法比较麻烦。其实,我们可以事先自定义一个函数,然后再用自定义的函数来转换。
1、执行“工具→宏→Visual Basic编辑器”命令,进入“Visual Basic编辑”窗口(如图5)。执行“插入→模块”命令,插入一个模块(如“模块1”),双击“模块1”在窗口右边展开“模块1(代码)”编辑窗口,输入如下代码。
Function dxje(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]") '将百分位转为中文大写
dxje = zy & "元" & "整"
d1 = zy & "元"
If f <> 0 And j <> 0 Then
dxje = d1 & zj & "角" & zf & "分"
If y = 0 Then
dxje = zj & "角" & zf & "分"
End If
End If
If f = 0 And j <> 0 Then
dxje = d1 & zj & "角" & "整"
If y = 0 Then
dxje = zj & "角" & "整"
End If
End If
If f <> 0 And j = 0 Then
dxje = d1 & zj & zf & "分"
If y = 0 Then
dxje = zf & "分"
End If
End If
If q = "" Then
dxje = 0 '如没有输入任何数值为0
End If
End Function
注意:①上面代码中英文单引号“'”后面的字符可以不输入,只是用来解释代码的含义。②代码中“dxje”是自定义函数名称,你可以修改为其他字符。
2、输入完成后,关闭VBA编辑窗口返回工作表状态。
3、如果要转换C2单元格的数值,并将结果保存的D2单元格中(如图6),只要在D2单元格中输入公式:=dxje(C2),确认即可(参见图6)。
注意:通常情况下,自定义的函数只适应于定制的工作簿中,如果要在其它工作簿中使用,请将其制作为加载宏,然后加载一下即可。