实际工作中,为解决复杂问题经常会写很长复杂的函数公式,有时甚至内置函数无法解决,这时就可以利用VBA开发自定义函数。那么该如何进行自定义函数,自定义的函数如何添加到函数库,并对其添加必要的使用说明,使其更像内置函数呢?

下面以自定义WLOOKUP函数为例,为读者详细讲解。

WLOOKUP自定义函数其实是INDEX和MATCH函数嵌套函数,实现的是查找匹配值功能,与微软新出的XLOOKUP函数功能一致,但XLOOKUP函数只有Office 365和Excel2019版本中有,所以自定义WLOOKUP函数主要是为低版本Excel提供XLOOKUP函数功能。

一、自定义函数

新建一个工作簿,接着按【alt+F11】组合键进入VBE编译环境,选中“Microsoft Excel 对象 ”,点击鼠标右键,依次点击 插入>模块。

excel2021不能用EVALUATE函数_数组

选中“模块1”,修改模块名称为“自定义函数”。



excel2021不能用EVALUATE函数_如何查看dll中的函数_02

点击“自定义函数”,输入如下代码。返回工作簿,即可在当前工作簿使用WLOOKUP函数,但其他工作簿无法使用该自定义函数,那么该如何设置呢?

1Function WLOOKUP(lookup_value, lookup_array, return_array As Range)2   WLOOKUP = Application.WorksheetFunction.Index(return_array, Application.WorksheetFunction.Match(lookup_value, lookup_array, 0))3End Function



excel2021不能用EVALUATE函数_数组_03

excel2021不能用EVALUATE函数_自定义函数_04

二、设置全局可用自定义函数


上一步已经自定义 WLOOKUP函数,如果要实现在整个Excel环境可用,需要把自定义函数工作簿保存为加载宏。

按【F12】快捷键,进入“另存为”对话框,【保存类型】选择“Excel加载宏(*.xlam)”,【文件名】修改为“自定义函数”,点击【保存】按钮,即可完成设置。



excel2021不能用EVALUATE函数_自定义_05

三、添加函数分类及函数描述说明

默认情况下, Excel将用户自定义函数分配到用户定义类别中。将用户自定义函数注册到Excel,可使其看起来更像是Excel内置函数,包括为自定义函数指定描述性文字、将其分配到相应的类别中。 WLOOKUP函数是查找函数,可以将其归类到“查找与引用”类别,并添加相应的参数描述说明。我们可以用Application.MacroOptions方法添加分类和说明,具体操作步骤如下: 首先按【 alt+F11】进入VBE环境,在“自定义函数”模块里面插入如下代码:

1Sub runmacro() 2   Dim ArgDes(2) As String 3   ArgDes(0) = "是要搜索的值" 4   ArgDes(1) = "是要在其中进行搜索的数组或范围" 5   ArgDes(2) = "是要返回的数组或范围" 6   Application.MacroOptions _ 7   Macro:="WLOOKUP", _ 8   Description:="在某个范围或数组中搜索匹配项,并通过第二个范围或数组返回相应的项。精确匹配。", _ 9   Category:=5, _10   ArgumentDescriptions:=ArgDes11End Sub




excel2021不能用EVALUATE函数_如何查看dll中的函数_06


经过上一步操作已经成功将函数加入函数库,并且点击函数参数会出现关于参数说明。

excel2021不能用EVALUATE函数_自定义函数_07

excel2021不能用EVALUATE函数_自定义_08