观看记录
  • 我的观影记录
登录
测试首页Excel数组任列查找另一列不重复值自定义函数

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

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

0Excel文本索引自界说函数

工具/原料

  • Microsoft Office Excel 2007
  • Excel VBA

一、函数VLOOKUPAR

  1. 1

    功能:在数组任一列(可以反复)中查找另一列,然后在行之间移动以返回单位格的值(不反复值),找不到返回错误值#N/A。

  2. 2

    语法:

    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值区域单位格。

    END
  3. 2

二、函数VLOOKUPAR编制

  1. 1

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

  2. 2

    然后按下快捷键ALT+F11打开VBE(宏)编纂界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。

  3. 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

        End If

        nn1 = n1.Value

        If Err.Number <> 0 Then

            nn1 = n1

            Err.Clear

        End If

        nn2 = n2.Value

        If Err.Number <> 0 Then

            nn2 = n2

            Err.Clear

        End 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

            If mb.Cells(i, nn1).Value = mmr Then

               k = k + 1

               If k = n + 1 Then

                  VLOOKUPAR = mb.Cells(i, nn2).Value

                  Exit For

               Else

                  VLOOKUPAR ="#N/A"

               End If

            End If

        Next i

        If k = 0 Then VLOOKUPAR ="#N/A"

    End Function

  4. 4

    以上操作动态过程如下:

    END

三、函数VLOOKUPAR利用

  1. 1

    回到工作表窗口,填写公式如下:

    F2: =VLOOKUPAR(E2,3,$A$1:$C$10,1,$E$1:E1)

    F3: =VLOOKUPAR(E3,3,$A$1:$C$10,1,$E$1:E2)

    F4:  =VLOOKUPAR(E4,3,$A$1:$C$10,1,$E$1:E3)

    F5: =VLOOKUPAR(E5,3,$A$1:$C$10,1,$E$1:E4)

    F6: =VLOOKUPAR(E6,3,$A$1:$C$10,1,$E$1:E5)

    F7: =VLOOKUPAR(E7,3,$A$1:$C$10,1,$E$1:E6)

    F8: =VLOOKUPAR(E8,3,$A$1:$C$10,1,$E$1:E7)

    F9:  =VLOOKUPAR(E9,3,$A$1:$C$10,1,$E$1:E8)

    F10:=VLOOKUPAR(E10,3,$A$1:$C$10,1,$E$1:E9)

    G2:=VLOOKUPAR(E2,3,$A$1:$C$10,2,$E$1:E1)

    G3:=VLOOKUPAR(E3,3,$A$1:$C$10,2,$E$1:E2)

    G4:=VLOOKUPAR(E4,3,$A$1:$C$10,2,$E$1:E3)

    G5:=VLOOKUPAR(E5,3,$A$1:$C$10,2,$E$1:E4)

    G6:=VLOOKUPAR(E6,3,$A$1:$C$10,2,$E$1:E5)

    G7:=VLOOKUPAR(E7,3,$A$1:$C$10,2,$E$1:E6)

    G8:=VLOOKUPAR(E8,3,$A$1:$C$10,2,$E$1:E7)

    G9:=VLOOKUPAR(E9,3,$A$1:$C$10,2,$E$1:E8)

    G10:=VLOOKUPAR(E10,3,$A$1:$C$10,2,$E$1:E9)

    获得成果如下图:

  2. 2

    若是感觉这篇经验帮到了您,请点击下方的 “投票点赞" 或者“保藏”撑持我!还有疑问的话可以点击下方的 “我有疑问”,感谢啦!

    END

注重事项

  • 动态图片要双击当作零丁大图才能播放全过程。

“Excel数组任列查找另一列不重复值自定义函数”关联的文章

切换深色外观
留言
视频编辑修改
回到顶部
首页
手机数码
医疗健康
金融管理
社交情感
无名