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