Excel数组任列查找另一列不重复值自定义函数

修法布施得聪明智慧 , 多分享让生活更美好 。 上次分享《Excel文本索引自定义数》 , 用TEXTSY处理从文本中分离合并需要的字串文本功能更强大和使用方便 。 VLOOKUP函数在数组第一列中查找 , 然后在行之间移动以返回单元格的值 。 VLOOKUP函数无法达到任列查另列数据和重复查找数据 。 下面分享另一个自定义函数VLOOKUPAR能处理这些问题 。 0Excel文本索引自界说函数

需要这些哦
Microsoft Office Excel 2007
Excel VBA
一、函数VLOOKUPAR1功能:在数组任一列(可以反复)中查找另一列 , 然后在行之间移动以返回单位格的值(不反复值) , 找不到返回错误值#N/A 。

2语法:
【Excel数组任列查找另一列不重复值自定义函数】VLOOKUPAR(lookup_value,col_index_num1 , table_array,col_index_num2,range_lookup)
Lookup_value  为需要在表格数组任一列中查找的数值 。 Lookup_value 可觉得数值或引用 。
col_index_num1 为 table_array 中Lookup_value列序号
Table_array  为两列或多列数据 。 利用对区域或区域名称的引用 。 table_array 任一列中的值是由 lookup_value 搜刮的值 。 这些值可所以文本、数字或逻辑值 。 文本区分大小写 。  
Col_index_num2  为 table_array 中待返回的匹配值的列序号 。 Col_index_num2 为 1 时 , 返回 table_array 第一列中的数值;col_index_num2 为 2 , 返回 table_array 第二列中的数值 , 以此类推 。
若是 col_index_num2 :
小于 1 , VLOOKUPAR 返回错误值 #VALUE! 。
大于 table_array 的列数 , VLOOKUPAR 返回错误值 #REF! 。
Range_lookup  为Lookup_value上行Lookup_value值区域单位格 。

2
二、函数VLOOKUPAR编制1起首打开Microsoft Office Excel 2007 , 新建文档并保留文件名《Excel数组任列查找另一列不反复值自界说函数.xlsm》(演示文件 , 下面代码复制到能运行宏的工作簿都可以)如图 。

Excel数组任列查找另一列不重复值自定义函数

文章插图

2然后按下快捷键ALT+F11打开VBE(宏)编纂界面 , 然后点菜单栏【插入】下拉中列表中点【模块(M)】如图 。
Excel数组任列查找另一列不重复值自定义函数

文章插图

3然后插入了一个模块1 , 在代码框中复制如下代码:
Function VLOOKUPAR(mr, n1, mb As Range, n2, mrs As Range)
    '2020-10-25 21:35:26
    Dim mmr, nn1, mmb, nn2, mmrs, mbr As Long, mbc As Long
    Dim i As Long, n As Long, k As Long
    On Error Resume Next
    mmr = mr.Value
    If Err.Number <> 0 Then
        mmr = mr
        Err.Clear
    If
    nn1 = n1.Value
    If Err.Number <> 0 Then
        nn1 = n1
        Err.Clear
    If
    nn2 = n2.Value
    If Err.Number <> 0 Then
        nn2 = n2
        Err.Clear
    If
    mbr = mb.Rows.Count
    mbc = mb.Columns.Count
    If nn1 < 1 Or nn2 < 1 Then VLOOKUPAR = "#VALUE!"
    If nn1 > mbc Or nn2 > mbc Then VLOOKUPAR = "#REF!"
    n = Application.WorksheetFunction.CountIf(mrs, mr)
    k = 0
    For i = 1 To mbr

推荐阅读