excel学习库

excel表格_excel函数公式大全_execl从入门到精通

EXCEL之BVA-自定义函数的参数ParamArray使用方法实例说明

自定义函数ParamArray参数Function txtjoin2(str As Range, ParamArray x()) '第一个str As Range指定一个对象变量,ParamArray x(),指定一个数组变量x,ParamArray只能用于最后的一个参数,指明最后这个参数是一个 Variant 元素的 Optional 数组。使用 ParamArray 关键字可以提供任意数目的参数。ParamArray 关键字不能与 ByVal,ByRef,或 Optional 一起使用。 Dim s1 As Integer, s2 As Integer, findvalue As Range Dim str2 As String, strcol As Integer, i As Integer s1 = LBound(x): s2 = UBound(x) '获取数组数量,把下标和上标分别赋值给变量s1和s2 If s2 > 1 Then '对数组数量进行一个判断,当数组参数大于等于2个时(即不算数组前的一个,最少有3个参数)才执行下面的语句,因为除了前面一个不在数组里的参数,数组里的第一个参数是要查找区域,第二个参数是设置查找模式,第三个以后是要返回的值,如果数组数量不到3个则没有意义。 str2 = str.value '获取要查找的单元格内容 strcol = str.Column '获取要查找的单元格所在的列数 If x(1) = 1 Then '数据下标是从0开始的,1代表第二个,如果数组第二个参数等于1,则 Set findvalue = x(0).Find(what:=str2, lookat:=xlWhole) '在数组第一个参数指定的位置里查找变量str2,以单元格匹配(完全匹配方式),找到后把找到的单元格对象赋值给变量findvalue Else Set findvalue = x(0).Find(what:=str2, lookat:=xlPart) '以单元格包含方式查找 End If If Not findvalue Is Nothing Then '如果找到 txtjoin2 = Cells(findvalue.Row, findvalue.Column + x(2)).value '把找到的单元格和数组第三个参数指定的返回列数偏移值对应的单元格数值返回给变量txtjoin2 If s2 > 2 Then '如果数组上标大于2,则执行下面的for语句,大于2的整数最小是3,在一维数据,3是代表数里里的第四个 For i = s1 + 3 To s2 '从数组第4个开始到数组最后一个循环一次 If findvalue.Column + x(i) > 0 Then '判定指定的要返回的列数是否大于0,因为0以下的的列数是不存在的,最小是1开始,这里没有判定是否超出最大列数,因为一般手误也不会输入超出最后列数的值。需要也可以进行判断 txtjoin2 = txtjoin2 & "," & Cells(findvalue.Row, findvalue.Column + x(i)).value '把符合条件的需要返回的多个值以逗分隔串联系起来,注意每个变量和字符串之间都要用& 符号连接,字符串都要加双引号""括起来。 End If Next End If End If Else txtjoin2 = "" End If End Function

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接