分享

VLOOKUP函数已死,有事烧纸

 老三sp36kqpkpm 2018-04-05

同学们好啊,VLOOKUP函数是表亲们的大众情人,查找数据的时候经常会用到。

但是这个函数也有两处明显的缺陷:

一是不能从右向左查询,

二是不能返回多个结果。


这两个问题想必困扰了表哥表妹好多年啊。今天就和大家分享一个自定义函数——LOOK,先来看看使用方法:

G2 单元格公式为:

=LOOK($F$2,C:C,2,ROW(A1))

这个自定义函数的参数和VLOOKUP函数类似:

第一参数是要查询的内容,

第二参数是包含查询值的数据列,

第三参数是要返回第几列的内容,

第四参数使用ROW(A1)生成一个连续的序号。

向下复制公式,即可实现一对多查询。


如果要从右向左查询,只要修改一下第三参数,使其变成负数即可:

看到这里,是不是有点眼红了?


接下来看看如何使用这个自定义函数:

步骤1    右键单击工作表标签→查看代码


步骤2    在VBE窗口中依次单击【插入】→【模块】,然后在右侧的模块代码窗口中输入自定义代码:

以下代码可复制:

Function LOOK(查找值 As String, 区域 As Range, Optional 列 As Integer = 2, Optional 索引号 As Integer = 1) As String

    Application.Volatile

    Dim i As Long, cell As Range, Str As String

    With 区域(1).Resize(区域.Rows.Count, 1)

    If .Cells(1) = 查找值 Then Set cell = .Cells(1) Else Set cell = .Find(查找值, LookIn:=xlValues)

     If Not cell Is Nothing Then

        Str = cell.Address

        Do

            i = i + 1

            If i = 索引号 Then LOOK = cell.Offset(0, 列 - 1): Exit Function

            Set cell = 区域.Find(查找值, cell)

        Loop While Not cell Is Nothing And cell.Address <> Str

    End If

End With

End Function


步骤3 按F12键,将文件保存为.xlam格式。

以后可以先打开这个加载宏文件,然后再打开需要处理的文档,就可以使用自定义函数了。


代码作者 ExcelHome技术论坛版主 罗刚君

图文整理:祝洪忠

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多