:Excel中返回指定第几个重复值的自定义函数WLOOKUP

来源:百度文库 编辑:九乡新闻网 时间:2024/04/20 11:09:49
 
    在这个世界上,只有你想不到的,没有做不到的。 高手永远都是高手啊。
    大家都知道Excel自带的VLOOKUP函数如果存在多个符合条件的结果时,只能返回符合条件的第一个结果,如果想知道第二个、第三个甚至是后面的就无能为力了。下面的自定义函数的作用和VLOOKUP一样,唯一不同的是,这个函数可以通过第三个参数来指定返回第几个符合条件的结果。值得珍藏的代码。(JT_man注:收录时已修改部分代码)

Function WLOOKUP(X As Range, M As Range, A As Byte, B As Byte)

    'X 要查找的内容
    'M 数据查询的单列区域(无需指定多列区域,与VLOOKUP函数的参数有区别)
    'A 返回第几个符合条件的结果
    'B 返回结果的列索引
    '原代码中,M As Variant

    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

End Function

使用方法示例:
要求:根据下述成绩表,得到所有姓名为“张3”的外语成绩。