编写你自己的EXCEL函数 可不可以在EXCEL中定义自己的函数,实现自己想要的功能?答案是肯定的。想知道怎样定义一个自己的函数吗?看我逐一为你道来。当然,在这之前你最好了解一些编程序方面的知识。
在以下示例中,将实现这样的函数功能:
在A2单元格中输进"=DXJE(A1)" (不包括引号)
函数会检查A1单元格中的内容是不是数字,假如不是,则在A2单元格中显示:"错误,您要转换的值不是一个数字!",假如是数字,则将它转换成大写的金额。
这里说的单元格地址只是举例,实际上,这个自定函数和EXCEL内部函数的使用方法是一样的,但是还是有一些小小的差别,这个放到后面讲,现在看看如何实现这个函数功能。
新建一个EXCEL表格;
按ALT+F11进进VBE界面(在工作标签上点右键/查看代码也可以进进);
在VBE插进菜单中插进一个模块;
双击模块1,在其中输进: Public Function DXJE(M) if ISNUMERIC(M) THEN DXJE = Replace(Application.Text(Round(M + 0.00000001, 2), "[DBnum2]"), ".", "元") DXJE = IIf(Left(Right(DXJE, 3), 1) = "元", Left(DXJE, Len(DXJE) - 1) & "角" & Right(DXJE, 1) & "分", IIf(Left(Right(DXJE, 2), 1) = "元", DXJE & "角整", IIf(DXJE = "零", "", DXJE & "元整"))) DXJE = Replace(Replace(Replace(Replace(DXJE, "零元零角", ""), "零元", ""), "零角", "零"), "-", "负") ELSE DXJE="错误,您要转换的值不是一个数字" END IF End Function 好了,现在封闭VBE窗口,回到EXCEL中,另?**诒4胬嘈椭醒≡?加载宏",名字起什么没关系,不过最好体现功能,这里我们另?**?大写金额转换.xla"。EXCEL会自动将XLA后缀的文件保存到"C:\Documents and Settings\当前电脑用户名\Application Data\Microsoft\AddIns"路径下。
封闭EXCEL,再随便打开一个EXCEL;
在工具菜单中选择"加载宏",弹出加载宏对话框;
在左边的多选框中勾选你刚才保存的"大写金额转换"加载宏。什么?没有?好吧,假如没有,你点击"浏览",到"C:\Documents and Settings\当前电脑用户名\Application Data\Microsoft\AddIns"路径下把"大写金额转换.xla"打开,就会有了。
现在,你随便在一个单元格中输进"=DXJE()",然后回车,看到了什么?它显示为"壹万贰仟叁佰肆拾伍元整",当然,括号里的内容也可以是单个的单元格地址,这个和内置函数是一样的。
前?**颐撬倒远ㄒ宓暮湍谥玫幕故腔嵊幸坏阈〔畋穑衷谖依锤嫠吣悴畋鹪谀睦铩<偃缒阌肊RP,财务软件等其它软件的"导出到EXCEL"功能,然后你想要用刚才自定义的函数,会发现,用不了,出现了错误。为什么会这样呢?我之前为此迷惑了好久,还到网上发贴寻找答案,不过后来我自己想到了。原来,一般的软件在使用"导出到EXCEL"功能时,会在启动EXCEL的命令中加上一些启动参数,比如说,不显示启动画面的参数是"/e","/s"是以安全模式启动EXCEL,这样启动的EXCEL方式如同它是安装后首次启动一样,会跳过加载宏,所以,自定义函数不起作用了。解决这个题目没有好的方法,你可以先将这个导出来的EXCEL保存,封闭,然后重新双击打开,这样就可以使用自定义的函数了。
最后说一句,函数并不能做到所有的功能,它只适合做那些只有一个返回值的事情。