专栏名称: Excel之家ExcelHome
excel技巧原创教程每日推送,excel表格职场模板干货仓库,图文/视频/动画等多种教学方式分享excel操作技巧教程/excel函数公式教程/excel数据透视表教程/excel图表教程/Word教程,助您轻松提高办公效率!
目录
相关文章推荐
完美Excel  ·  使用VBA添加图表 ·  3 天前  
Excel之家ExcelHome  ·  一组常用Excel文本函数 ·  5 天前  
完美Excel  ·  每月安全动态(2024年10月) ·  1 周前  
Excel之家ExcelHome  ·  CSV格式文件的正确打开方式 ·  1 周前  
Excel之家ExcelHome  ·  这些公式用得好,一堆工作等你搞 ·  1 周前  
51好读  ›  专栏  ›  Excel之家ExcelHome

比VLOOKUP函数好用十倍的自定义函数

Excel之家ExcelHome  · 公众号  · Excel  · 2017-06-19 07:00

正文

同学们好啊,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技术论坛版主 罗刚君

图文整理:祝洪忠

点击【阅读原文】,可下载Excel加载宏文档



长按下面二维码图片,点”识别图中二维码“然后再点关注,每天都会收到最新Excel教程。