分享

Vlookup、Lookup都靠边,Mlookup函数又来了!!

 chenlufqyd 2016-10-13

Vlookup是最常用到的查找函数,但它有很大的局限性。比如:只能查找第一个符合条件的值,无法任意位置查找和多条件查找等。于是,兰色用VBA编写了一个功能强大的Mlookup函数。(2016年9月14日再次更新)


一、用法介绍


=Mlookup(查找内容查找区域,返回值所在的列数,第N个)


语法说明:

  • 查找内容:除了单个值外,还可以选取多个单元格,进行多条件查找。

  • 查找区域:同VLOOKUP

  • 返回值的在列数:同VLOOKUP

  • 第N个:值为1就返回第1个符合条件的,值为2就返回第2个符合条件的....当值为0值时,返回最后1个符合条件的值,值为-1时返回所有查找结果并用逗号连接(新增功能)。


二、功能演示。


【例】如下图所示的入库表中,要求完成以下查找。


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)


5、实现多结果查找功能。(把所有符合条件结果用逗号连接起来)


=MLOOKUP(A11,B$1:C$8,2,-1)



三、使用方法


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

ElseIf M = -1 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

Mlookup = Mlookup & ',' & ARR2(X, L)

End If

Next X

Mlookup = Right(Mlookup, Len(Mlookup) - 1)

Exit Function

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

End Function



2、当前文件另存为“启用宏的工作簿”格式,


然后在这个表格中就可以象兰色一样使用Mlookup函数了。


有同学问:怎么能在电脑上所有的Excel文件中使用该函数

答:

第一步:把代码粘贴到一个空excel文件的VBE代码窗口中,然后把文件另存为“Excel加截宏”文件。


第二步:开发工具 - 加载宏 - 浏览,选取Mlookup加载宏文件后,在加载宏窗口中即可看到Mlookup函数选项,可以通过该选项控制Mlookup函数是否启用。(如果没有开发工具,找度娘问一下相对应版本显示方法吧



注意:加载宏只能在本机上使用,如果需要在其他机器上使用,方法同本机。


附表下载地址:(复制到ie地址栏中按回车下载)


http://www./home/upload/2015_08/temp_15081218055112.zip


兰色说:VBA就是这么帅,需要什么函数就编写它。学会VBA后,你会发现excel变得无所不能!


Excel精英培训平台创办的VBA零入门班5期 和 VBA中高级开发班 正在招生中,想学VBA的同学可以联系客服特特(微信 18539980003 特特为好友 )了解详情和报名



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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多