内置函数 VLOOKUP 是 Excel 中最强大的函数之一。但它有一个显着的缺点 - 它仅在表中且仅在最右列中查找所需值的第一次出现。但是如果您需要第二个、第三个而不是最后一个呢?
假设我们有一个已处理贷款表,如下所示:
例如,我们需要知道向迈克发放的第三笔贷款的金额是多少,或者约翰何时执行了第二份协议。 内置函数VLOOKUP 知道如何仅搜索表中第一次出现的名称对我们没有帮助。
让我们编写我们的函数,它不仅会搜索第一个条目,还会搜索任何后续(第 N 个)条目。例如,我们将其称为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 )