Vlookup是最常用到的查找函数,但它有很大的局限性。比如:只能查找第一个符合条件的值,无法任意位置查找和多条件查找等。于是,兰色用VBA编写了一个功能强大的Mlookup函数。
一、用法介绍
=Mlookup(查找内容,查找区域,返回值所在的列数,第N个)
语法说明:
二、功能演示。
【例】如下图所示的入库表中,要求完成以下查找。
1、查找第2次电视的进货数量。
=Mlookup(A11,A2:D8,4,2)
2、查找电视的最后一次入库数量
=Mlookup(A11,A2:D8,4,0)
3、查找47寸电视的第1次进货数量。
=Mlookup(A11:B11,A2:D8,4,1)
4、实现筛选功能。
=Mlookup($B$10:$B$11,$A$1:$D$8,4,A14)
三、使用方法
Mlookup要想在你的表格中也能使用,需要按下面的步骤操作。
1、按alt+F11(键盘上如果有FN键 ,还需要同时按FN)会打开VBE窗口,在窗口中点插入 - 模块。把下面的代码复制粘贴到右侧的空白区域中。
代码
Function Mlookup(rg, rgs As Range, L As Integer, M As Integer)
Dim arr1, ARR2, 列数
Dim R, n, K, X, cc, sr As String
arr1 = rg.Value
ARR2 = rgs
If VBA.IsArray(arr1) Then
For Each R In arr1
If R <> "" Then
cc = cc & R
列数 = 列数 + 1
End If
Next R
Else
cc = arr1
End If
If M > 0 Then '非查找最后一个
For X = 1 To UBound(ARR2)
sr = ""
If 列数 > 1 Then
For q = 1 To 列数
sr = sr & ARR2(X, q)
Next q
Else
sr = ARR2(X, 1)
End If
If sr = cc Then
K = K + 1
If K = M Then
Mlookup = ARR2(X, L)
Exit Function
End If
End If
Next X
Else '查找最后一个
For X = UBound(ARR2) To 1 Step -1
sr = ""
If 列数 > 1 Then
For q = 1 To 列数
sr = sr & ARR2(X, q)
Next q
Else
sr = ARR2(X, 1)
End If
If sr = cc Then
Mlookup = ARR2(X, L)
Exit Function
End If
Next X
End If
Mlookup = ""
End Function
2、当前文件另存为“启用宏的工作簿”格式,
然后在这个表格中就可以使用Mlookup函数了。
PPV课其他精彩文章:
1、回复“干货”查看干货 数据分析师完整知识结构
2、回复“答案”查看大数据Hadoop面试笔试题及答案
3、回复“设计”查看这是我见过最逆天的设计,令人惊叹叫绝
4、回复“可视化”查看数据可视化专题-数据可视化案例与工具
5、回复“禅师”查看当禅师遇到一位理科生,后来禅师疯了!!知识无极限
6、回复“啤酒”查看数据挖掘关联注明案例-啤酒喝尿布
7、回复“栋察”查看大数据栋察——大数据时代的历史机遇连载
8、回复“数据咖”查看数据咖——PPV课数据爱好者俱乐部省分会会长招募
9、回复“每日一课”查看【每日一课】手机在线视频集锦