vlookup函数会自动寻找搜索区域的第一个匹配项,但是我想全部找出,包括相同的也全部显示出来,求大侠指教!

如题所述

打开EXCELL表,然后按F12,在工程资源管理器中点右建增加新模块,在新模块中输入如下内容

Function look(查找值 As String, 区域 As Range, 列 As Long, 索引号) As String

    Application.Volatile

    On Error Resume Next

    Dim onlys As New Collection, arr(), i As Long, j As Long

    arr = 区域

    For i = 1 To UBound(arr)

        If arr(i, 1) = 查找值 Then

            If arr(i, 列) <> "" Then onlys.Add arr(i, 列), CStr(arr(i, 列)): j = j + 1

        End If

    Next i

    look = onlys(索引号)

    If j < 索引号 Then look = ""

End Function

输完以上内容后,你就可以在EXCELL表格中用=look()函数,参数和vlookup一样。第一个参与查值用绝对地址,往下拉可找出所有要找的值!

效果如截图

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-06
一般使用vlookup都是先要合并后再使用的,以保证搜索项是唯一的。要达到你想的要求,那么vlookup是不能做到的,如果一定要用vlookup只能倒过来使用:在搜索区域对搜索项去使用vlookup,本回答被提问者采纳