内置函数 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) '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)