摘要:Excel是大家非常熟悉的应用软件,其使用非常方便。尤其是其强大的函数功能,为我们带来了极大方便,但有时我们为实现一项规定的功能,可能用到几个函数或者采用嵌套函数,这样应用起来,也不太方便;或者使用自定义公式进行计算,就没有现成的公式可用。可喜的是,我们可以创建自定义函数UDF(User—defined function),它的运行与Excel中自带的函数完全相同。建立自定义函数有以下几个优点:建立自己特殊的功能和名称的函数;能将复杂的、嵌套的、多个原有的函数组合在一起,发挥更大的威力,使用、维护更加方便。
关键词:函数 水质 应用 Excel是大家非常熟悉的应用软件,其使用非常方便。尤其是其强大的函数功能,为我们带来了极大方便,但有时我们为实现一项规定的功能,可能用到几个函数或者采用嵌套函数,这样应用起来,也不太方便;或者使用自定义公式进行计算,就没有现成的公式可用。可喜的是,我们可以创建自定义函数UDF(User—defined function),它的运行与Excel中自带的函数完全相同。建立自定义函数有以下几个优点:建立自己特殊的功能和名称的函数;能将复杂的、嵌套的、多个原有的函数组合在一起,发挥更大的威力,使用、维护更加方便。 比如在水质计算中,高锰酸盐指数的计算公式非常繁琐,而且含必须将结果修约至0.1,还得考虑逢5奇进偶舍的问题。利用计算器逐步计算很是麻烦;在EXCEL中利用单元格引用计算稍有不注意,可能造成计算上差错,而且每次都得建立,很不方便。现在我们利用EXCEL自带的VBA编辑器建立自己的函数来解决这个问题。 首先进入Excel,在[工具]→[宏]→[Visul Basic编辑器](也可按组合键[Alt+F11]),在“Visul Basic编辑器”中选择[插入]→[添加模块],将模块名称改为“高锰酸盐指数浓度计算公式”,在代码窗口输入下列函数: Public Function CImn(C As Single, V0 As Single, V1 As Single, V2 As Single, V As Integer)'高锰酸盐指数计算公式 Dim DotLocation As Integer '定义小数点位置变量'************************************************************************* CImn = ((((10 + V1) * 10 / V2 - 10) - (((10 + V0) * 10 / V2 - 10) * (100 - V) / 100))) * C * 8000 / V'*************************************************************************'保留一位小数'当CIMN值小于1时,自动补上个位0 If CImn < 1 Then CImn = 0 & CImn End If'确定小数点的位置DotLocation = InStr(CImn, ".")'判断小数点后第二位是否为5 If Mid(CImn, DotLocation + 2, 1) = 5 Then If Len(CImn) <= DotLocation + 2 And Mid(CImn, DotLocation + 1, 1) Mod 2 = 0 Then CImn = Left(CImn, DotLocation + 1) '为5且5后没有数和5前一位为偶数,直接用round()函数修约 Else CImn = Round(CImn, 1) End If Else CImn = Round(CImn, 1) '不为5,直接用round()函数修约 End If CImn = Format(Round(CImn, 1), "#0.0") End Function 我们知道,Excel中函数都有一个说明用以帮助使用,我们也要给这个函数添加一个说明。在工具栏中选择“对象浏览器”(如图1),选择我们所做“高锰酸盐指数浓度计算公式”模块,在其[右键]→[属性]中添加关于对这个函数的描述,这个描述将出现在Excel中关于函数的说明中,如果你要对软件保密的话,在“模块”上按右键,[VBAproject属性]→[保护中设置密码],别人就看不到你的源程序了。
图1描述函数 这时,退出,回到Excel界面,将这个文件另存为:类型为“Microsoft Excel加载宏”,在Excel 2003中,它会自动更改保存位置为“C:\Documents and Settings\wzwemc(电脑用户名)\Application Data\Microsoft\AddIns” (系统装在c:\windows),当然,你也可以把这个文件“高锰酸盐指数浓度计算公式.xla”,直接复制到office\library(office的安装路径下),而在Excel 97中只能放在后一个位置。使用函数很简单,点击[工具]→[加载宏],在你创建的“高锰酸盐指数浓度计算公式”前打个勾,如图2。在单元格直接输入“=CImn()”,选中相应的参数即可(如图3)。是不是像Microsoft office提供的函数一样,很有点专业味道。
图2加载宏