摘要:excel是大家非常熟悉的应用软件,其使用非常方便。尤其是其强大的函数功能,为我们带来了极大方便,但有时我们为实现一项规定的功能,可能用到几个函数或者采用嵌套函数,这样应用起来,也不太方便;或者使用自定义公式进行计算,就没有现成的公式可用。可喜的是,我们可以创建自定义函数udf(user—definedfunction),它的运行与excel中自带的函数完全相同。建立自定义函数有以下几个优点:建立自己特殊的功能和名称的函数;能将复杂的、嵌套的、多个原有的函数组合在一起,发挥更大的威力,使用、维护更加方便。
关键词:函数水质应用
excel是大家非常熟悉的应用软件,其使用非常方便。尤其是其强大的函数功能,为我们带来了极大方便,但有时我们为实现一项规定的功能,可能用到几个函数或者采用嵌套函数,这样应用起来,也不太方便;或者使用自定义公式进行计算,就没有现成的公式可用。可喜的是,我们可以创建自定义函数udf(user—definedfunction),它的运行与excel中自带的函数完全相同。建立自定义函数有以下几个优点:建立自己特殊的功能和名称的函数;能将复杂的、嵌套的、多个原有的函数组合在一起,发挥更大的威力,使用、维护更加方便。
比如在水质计算中,高锰酸盐指数的计算公式非常繁琐,而且含必须将结果修约至0.1,还得考虑逢5奇进偶舍的问题。利用计算器逐步计算很是麻烦;在excel中利用单元格引用计算稍有不注意,可能造成计算上差错,而且每次都得建立,很不方便。现在我们利用excel自带的vba编辑器建立自己的函数来解决这个问题。
首先进入excel,在[工具]→[宏]→[visulbasic编辑器](也可按组合键[alt f11]),在“visulbasic编辑器”中选择[插入]→[添加模块],将模块名称改为“高锰酸盐指数浓度计算公式”,在代码窗口输入下列函数:
publicfunctioncimn(cassingle,v0assingle,v1assingle,v2assingle,vasinteger)
''高锰酸盐指数计算公式
dimdotlocationasinteger''定义小数点位置变量
''*************************************************************************
cimn=((((10 v1)*10/v2-10)-(((10 v0)*10/v2-10)*(100-v)/100)))*c*8000/v
''*************************************************************************
''保留一位小数
''当cimn值小于1时,自动补上个位0
ifcimn<1then
cimn=0&cimn
endif
''确定小数点的位置
dotlocation=instr(cimn,".")
''判断小数点后第二位是否为5
ifmid(cimn,dotlocation 2,1)=5then
iflen(cimn)<=dotlocation 2andmid(cimn,dotlocation 1,1)mod2=0then
cimn=left(cimn,dotlocation 1)''为5且5后没有数和5前一位为偶数,直接用round()函数修约
else
cimn=round(cimn,1)
endif
else
cimn=round(cimn,1)''不为5,直接用round()函数修约
endif
cimn=format(round(cimn,1),"#0.0")
endfunction
我们知道,excel中函数都有一个说明用以帮助使用,我们也要给这个函数添加一个说明。在工具栏中选择“对象浏览器”(如图1),选择我们所做“高锰酸盐指数浓度计算公式”模块,在其[右键]→[属性]中添加关于对这个函数的描述,这个描述将出现在excel中关于函数的说明中,如果你要对软件保密的话,在“模块”上按右键,[vbaproject属性]→[保护中设置密码],别人就看不到你的源程序了。
图1描述函数 这时,退出,回到excel界面,将这个文件另存为:类型为“microsoftexcel加载宏”,在excel2003中,它会自动更改保存位置为“c:documentsandsettingswzwemc(电脑用户名)applicationdatamicrosoftaddins”(系统装在c:\windows),当然,你也可以把这个文件“高锰酸盐指数浓度计算公式.xla”,直接复制到office\library(office的安装路径下),而在excel97中只能放在后一个位置。使用函数很简单,点击[工具]→[加载宏],在你创建的“高锰酸盐指数浓度计算公式”前打个勾,如图2。在单元格直接输入“=cimn()”,选中相应的参数即可(如图3)。是不是像microsoftoffice提供的函数一样,很有点专业味道。
图2加载宏
图3使用自定义函数 假如你把调用这个宏的excel文件拷贝到别的机子上运行,会出现“当前所要打开的文档含有其他文档的链接,是否要使用其他工作簿中的改动更新当前工作簿”的提示,可以显示原先计算的数据,这是因为在excel中的[工具]→[选项]→[重新计算]中,一般选中“保存外部链接数据”,但你不能重新计算,因为不能链接这个宏,别人机子上根本就没有这个函数。
此外,我们还可以为“加载宏”添加相关说明,这样更有利于自定义函数的维护。(如图3),找到“高锰酸盐指数浓度计算公式.xla”,点击[右键]→[属性]→[摘要](如图4),在描述里添加所需内容来对函数进行相关描述,其中“标题”部分将出现在“加载宏”的方框中,“备注”部分将出现在下面的函数说明部分。这时再看看,够不够专业。在excel97中也可以在其右键属性中作相应更改。
图4添加中文描述
来源:找论文网