分享

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

 JT_man 2011-04-22
 

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

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多