在这个世界上,只有你想不到的,没有做不到的。 高手永远都是高手啊。
大家都知道Excel自带的VLOOKUP函数如果存在多个符合条件的结果时,只能返回符合条件的第一个结果,如果想知道第二个、第三个甚至是后面的就无能为力了。下面的自定义函数的作用和VLOOKUP一样,唯一不同的是,这个函数可以通过第三个参数来指定返回第几个符合条件的结果。值得珍藏的代码。(JT_man注:收录时已修改部分代码)
Function WLOOKUP(X As Variant, M As Range, A As Byte, B As Integer)
'X 要查找的内容,可为单元格型、字符型、数值型、逻辑型等等。 'M
要进行数据查询的单列区域,与VLOOKUP函数的参数有区别。 'A
返回第几个符合条件的结果。如果重复值超过255个, ' 视具体情况把第1行代码中的 A As Byte 改为 A As Integer 或 A As
Long 'B
返回结果的列索引,可以是0或负数。 '
用于数据查询的单列区域M所在列的值为1,表示第1列, ' 右侧第1列为2,右侧第2列为3
。。。。。。 ' 左侧第1列为0,左侧第2列为-1,左侧第3列为-2 。。。。。。以此类推
Dim I As Integer, MR As Range, y As Integer I =
Application.WorksheetFunction.CountIf(M, X) 'Set M = Intersect(M.Parent.UsedRange,
M) For Each MR In M If MR.Value = X Then y = y +
1 If y
= A Then WLOOKUP = MR.Offset(0,
B - 1).Value Exit Function End If End If Next MR WLOOKUP = ""
End Function
使用方法示例: 要求:根据下述成绩表,得到所有姓名为“张3”的外语成绩。
![](http://userimage2.360doc.com/11/0422/17/251367_201104221739080167.jpg)
|