人气 4739

[Excel技巧] Excel VBA自定义函数及添加说明、指定类别、使用和公用 [复制链接]

胖子88888 2017-6-29 16:41:10
1 自定义函数的代码存放位置自定义函数放在模块中
2 自定义函数代码的格式 '函数功能: '在第一参数“区域”所代表的列中查找第二参数“查找值”的值,然后根据第三参数“列”的值确定返回值所在列的值 '如果有找到多个值,那么由第四参数决定返回第几个值 '忽略第三参数时表示默认值是为2,即返回“区域”右边一列的值 '忽略第四参数时表示默认值1,即返回第一个值 '使用函数可参考以下公式: '=look(E$2,B$1:C$12,2,ROW(A1)) '确定函数Look,类型为String。包括四个参数,前两个为必选参数,后两个为可选参数Function look(查找值 As String, 区域 As Range, Optional 列 As Integer = 2, Optional 索引号 As Integer = 1) As StringDim i As Long, cell As Range, Str As StringWith 区域.Columns(1)  '引用区域的第一列 '如果引用区域第一个单元格等于查找的对象,那么将该单元格赋予变量Cell。否则使用Find方法查找,将找到的单元格赋予变量CellIf .Cells(1) = 查找值 Then Set cell = .Cells(1) Else Set cell = .Find(查找值, LookIn:=xlValues, lookat:=xlWhole)If Not cell Is Nothing Then  '如果找到Str = cell.Address  '记录单元格地址Do  '通过循环语句继续查找i = i + 1  '累加变量,表示符合条件的个数 '如果变量等于最后一个参数,那么将查找到的单元格右边的值赋予Look函数If i = 索引号 Then look = cell.Offset(0, 列 - 1): Exit FunctionSet cell = 区域.Find(查找值, cell, , xlWhole)  '查找下一个 '如果找到的目标单元格地址不等于第一次找到的单元格的地址就继续查找Loop While cell.Address  StrElselook = ""  '如果找不到则直接返回空白End IfEnd WithEnd Function

1498725847157410.jpg

1498725847157410.jpg

1498725858131462.jpg

1498725858131462.jpg

3 添加自定义函数的说明开发工具→宏→宏名:look→选项→说明:输入说明内容。

1498725912550892.jpg

1498725912550892.jpg

4 为自定义函数指定类别在打开的“插入函数”对话框的“函数分类”列表中,函数的类别包括全部、财务、日期与时间等分类,而创建的自定义函数会自动分配到“用户定义”类别中。也可以把自定义函数添加到特定的类别中,运行如下的一个过程即可:Sub 指定函数类别()Application.MacroOptions "look", Category:=5End Sub函数类别编号如下所示:0全部1财务2 日期和时间3 数学和三角4 统计5 查找和引用6 数据库7 文本8 逻辑9 信息
5 自定义函数的使用1、被其它VBA程序调用2、在工作表公式中使用
6 自定义函数的公用自定义函数一般情况下只能在含有函数代码的工作簿内使用。如果需要让该自定义函数在所有打开的Excel工作簿中使用,需要保存为加载宏文件并进行加载。1、保存为加载宏文件:包含自定义函数的文件→另存为→类型:加载宏xla。2、添加加载宏:office按钮→Excel选项→加载项→转到→勾选:加载宏文件名→确定。

1498725931124133.jpg

1498725931124133.jpg
您需要登录后才可以回帖 登录 | 立即注册

QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

GMT+8, 2024-12-23 00:31 , Processed in 0.274370 second(s), 23 queries .

Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN