Допустим, у нас есть вот такая таблица оформленных кредитов:
Нам необходимо узнать, например, которая была сумма третьего выданного кредита Дмитрия или когда Иван оформил свою вторую сделку. Встроенная функция VLOOKUP (ВПР) умеет искать только первое вхождение фамилии в таблице и нам не поможет.
Напишем свою функцию, которая будет искать не только первое, а, в общем случае, N-е вхождение. Назовем ее, допустим, VLOOKUP2 (ВПР2).
Откройте меню Сервис - Макрос - Редактор 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 ( таблица; номер_столбца_где_ищем ; искомое_значение номер_входжения ; номер_столбца_с_которого_берём_значение )
То есть для того, чтобы найти сумму выданного Дмитрием третьего кредита, нужно ввести:
=VLOOKUP2(A2:A19;1;"Дмитрий";3;4)