养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

excel vba实例003 如何将小写金额转换成大写

时间:2024-10-10 13:23:09

小写金额转换成大小金额其实在工作中是经常需要用到的,excel中思凳框酣转换大写金额的方法很多,但我更倾向于使用自定义函数,保存为加载宏的方法,因为这样可以保存成一个加载宏文件,方便随时取用。惺绅寨瞀下面给出我的操作步骤。

工具/原料

硬件:电脑

软件:OfficeExcel(这里用的是OfficeExcel2013版)

方法/步骤

1、为了方便演示,先做两列,一列放小写金额,一列放大写金额。数据的话,各种情况都要考虑到,整数、分为零、角为零、元为零等各种情况。

excel vba实例003 如何将小写金额转换成大写

2、按Alt+F11,打开VBA编辑窗口,载入图空白位置右键——插入——模块,然后再双击出现的模块就可以进行编辑了。

excel vba实例003 如何将小写金额转换成大写

3、【注:最新修改代码在最后一步。】在模块编辑窗口中输入如下代码(纛独编竿由于有人反馈说当单元格是空的时候显姨胀兽辱示成了零元整,这样不对,我也觉得不妥,所以在这里本着对读者负责的态度在这里修改一下,修改注释在后面):“PublicFunctionjedx(curmoneyAsCurrency)AsString'currency改为RangeDimcurmoney1AsLongDimi1AsLongDimi2AsIntegerDimi3AsIntegerDims1AsString,s2AsString,s3AsString'可以在此位置插入如下代码,单引号去掉'ifcurmoney=""thenjedx=""'exitfunction'endifcurmoney1=Round(curmoney*100)i1=Int(curmoney1/100)i2=Int(curmoney1/10)-i1*10i3=curmoney1-i1*100-i2*10s1=Application.WorksheetFunction.Text(i1,"[dbnum2]")s2=Application.WorksheetFunction.Text(i2,"[dbnum2]")s3=Application.WorksheetFunction.Text(i3,"[dbnum2]")s1=s1&"元"Ifi3<>0Andi2<>0Thens1=s1&s2&"角"&s3&"分"Ifi1=0Thens1=s2&"角"&s3&"分"EndIfEndIfIfi3=0Andi2<>0Thens1=s1&s2&"角整"Ifi1=0Thens1=s2&"角整"EndIfEndIfIfi3<>0Andi2=0Thens1=s1&s2&s3&"分"Ifi1=0Thens1=s3&"分"EndIfEndIfIfRight(s1,1)="元"Thens1=s1&"整"jedx=s1EndFunction”注:不包含双引号,其中jedx是金额大写的缩写,便于记忆引用。

excel vba实例003 如何将小写金额转换成大写

4、代码写完确认无误后保存,保存是出现此对话框,选择否,另存为加载宏格式,即后缀*.xla。我这里把文件命名为“jedx金额大写.xla”。

excel vba实例003 如何将小写金额转换成大写

excel vba实例003 如何将小写金额转换成大写

5、但你需要用到的时候,就可以在编辑excel文件的时候打开之前保存的加载宏文件,我这里是保存为“jedx金额大写.xla”的文件。

excel vba实例003 如何将小写金额转换成大写

6、打开之后再excel中就可以像使用其他函数一样,我这里是输入“=jedx(B2)”,可以看到,当你输入到一定时候excel会像提示其他函数那样,提示这个函数。

excel vba实例003 如何将小写金额转换成大写

7、函数输入结束回车,小写的金额就变成了大写的了,下拉验证其他各式各样类型的金额,发现没有错误就OK了。

excel vba实例003 如何将小写金额转换成大写

8、鉴于新发现擢爻充种的问题:带小数的负值出错。代码修改如下,可全部复制粘贴:PublicFunctionjedx烫喇霰嘴(curmoneyAsRange)AsStringDimcurmoney1AsLongDimi1AsLongDimi2AsIntegerDimi3AsIntegerDims1AsString,s2AsString,s3AsStringIfcurmoney=""Thenjedx=""ExitFunctionEndIfcurmoney1=Round(curmoney*100)Ifcurmoney1<0Thencurmoney1=-curmoney1i1=Int(curmoney1/100)i2=Int(curmoney1/10)-i1*10i3=curmoney1-i1*100-i2*10s1=Application.WorksheetFunction.Text(i1,"[dbnum2]")s2=Application.WorksheetFunction.Text(i2,"[dbnum2]")s3=Application.WorksheetFunction.Text(i3,"[dbnum2]")s1=s1&"元"Ifi3<>0Andi2<>0Thens1=s1&s2&"角"&s3&"分"Ifi1=0Thens1=s2&"角"&s3&"分"EndIfEndIfIfi3=0Andi2<>0Thens1=s1&s2&"角整"Ifi1=0Thens1=s2&"角整"EndIfEndIfIfi3<>0Andi2=0Thens1=s1&s2&s3&"分"Ifi1=0Thens1=s3&"分"EndIfEndIfIfRight(s1,1)="元"Thens1=s1&"整"jedx="负"&s1Elsei1=Int(curmoney1/100)i2=Int(curmoney1/10)-i1*10i3=curmoney1-i1*100-i2*10s1=Application.WorksheetFunction.Text(i1,"[dbnum2]")s2=Application.WorksheetFunction.Text(i2,"[dbnum2]")s3=Application.WorksheetFunction.Text(i3,"[dbnum2]")s1=s1&"元"Ifi3<>0Andi2<>0Thens1=s1&s2&"角"&s3&"分"Ifi1=0Thens1=s2&"角"&s3&"分"EndIfEndIfIfi3=0Andi2<>0Thens1=s1&s2&"角整"Ifi1=0Thens1=s2&"角整"EndIfEndIfIfi3<>0Andi2=0Thens1=s1&s2&s3&"分"Ifi1=0Thens1=s3&"分"EndIfEndIfIfRight(s1,1)="元"Thens1=s1&"整"jedx=s1EndIfEndFunction

© 一点知识