在这个世界上,只有你想不到的,没有做不到的。 高手永远都是高手啊。
大家都知道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”的外语成绩。
联系客服