将阿拉伯金额数字转换成中文大写形式的两种方法: 内置函数法、 自定义函数法
一、 内置函数法
我们将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”下面的下拉按钮, 选中“公式” 选项, 在后面的方框中输入“=$C$12<0”,再按“格式” 按钮, 在随后弹出的“单元格格式” 对话框中, 将“字体” 颜色设置为红色, 确定退出。
4、 选中 C12 单元格, 执行“格式→单元格” 命令, 打开“单元格格式” 对话框, 切换到“数字” 标签下, 选中“分类 ” 下面的“货币” 选项后, 再选中右边“负数” 下面的红色选项,确定退出。 注意: 经过以上两步操作后, 当 C12 中的数值小于零时, 大、 小写结果均以红色显示, 与财务要求相一致。 5、 选中 13 行, 右击鼠标, 在随后弹出的快捷菜单中, 选“隐藏 ” 选项, 将13 行隐藏起来, 不影响正常打印效果。
二、自定义函数法 显然上面的转换方法比较麻烦。其实,我们可以事先自定义一个函数,然后再用自定义的函数来转换。 1、执行“工具→宏→Visual Basic编辑器”命令,进入“Visual Basic编辑”窗口。执行“插入→模块”命令,插入一个模块(如“模块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单元格中,只要在D2单元格中输入公式:=dxje(C2),确认即可。
注意:通常情况下,自定义的函数只适应于定制的工作簿中,如果要在其它工作簿中使用,请将其制作为加载宏,然后加载一下即可。 以上自定义函数的代码由“中文Excel应用论坛”网友豆豆提供,在此表示感谢!
方法三:金额转换——一个经典的函数公式
=IF(A1<0,"负","")&IF(ABS(A1)>1,TEXT(TRUNC(ABS(ROUND(A1,2))),"[DBNum2]")&"元","")&IF(ISERR(FIND(".",ROUND(A1,2))),"",TEXT(RIGHT(TRUNC(ROUND(A1,2)*10)),"[DBNum2]"))&IF(ISERR(FIND(".0",TEXT(A1,"0.00"))),"角","")&IF(LEFT(RIGHT(ROUND(A1,2),3))=".",TEXT(RIGHT(ROUND(A1,2)),"[DBNum2]")&"分","整")
|
|