TOP

改进函数VLOOKUP (VLOOKUP2)

描述

内置函数 VLOOKUP 是 Excel 中最强大的函数之一。但它有一个显着的缺点 - 它仅在表中且仅在最右列中查找所需值的第一次出现。但是如果您需要第二个、第三个而不是最后一个呢?


一个问题的例子

假设我们有一个已处理贷款表,如下所示:

例如,我们需要知道向迈克发放的第三笔贷款的金额是多少,或者约翰何时执行了第二份协议。 内置函数VLOOKUP 知道如何仅搜索表中第一次出现的名称对我们没有帮助。

让我们编写我们的函数,它不仅会搜索第一个条目,还会搜索任何后续(第 N 个)条目。例如,我们将其称为VLOOKUP2。

VBA 函数 VLOOKUP2 的代码

打开菜单 服务-宏-编辑器Visual Basic , 插入新模块 (菜单 Insert - Module)并复制该函数的文本:

Function VLOOKUP2(Table           As Range, _
                  SearchColumnNum As Integer, _
                  SearchValue     As Variant, _
                  N               As Integer, _
                  ResultColumnNum As Integer)        
  Dim i      As Integer
  Dim iCount As Integer
       
  For i = 1 To Table.Rows.Count
    If Table.Cells(i, SearchColumnNum) = SearchValue Then
      iCount = iCount + 1
    End If
    If iCount = N Then
      VLOOKUP2 = Table.Cells(i, ResultColumnNum)
      Exit For
    End If
  Next i
End Function 

关闭 Visual Basic 编辑器并返回到 Excel。

现在,在函数向导的用户定义类别中,您可以找到并使用我们的 VLOOKUP2 函数。该函数的语法如下:

=VLOOKUP2(桌子 ; 列号_我们_搜索位置 ;搜索值; 条目号 ; column_number_from_which_we_take_the_value

也就是说,为了查找发放给迈克的第三笔贷款的金额,您需要输入:

=VLOOKUP2(A2:A19 ; 1 ; “Mike”; 3 ; 4

有关该主题的文章: