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