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)        
  'moonexcel.com.ua
  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)

有关该主题的文章: