Покращена функція VLOOKUP (VLOOKUP2, ВПР2)

Припустимо, у нас є ось така таблиця оформлених кредитів:

Нам необхідно дізнатися, наприклад, яка була сума третього виданого кредиту Дмитра або коли Іван оформив свою другу угоду. Вбудована функція 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(таблиця; номер_стовпця_де_шукаємо; шукане_значення; номер_входження; номер_стовпця_з_якого_беремо_значення)

Тобто, для того, щоб знайти суму виданого Дмитром третього кредиту, потрібно буде ввести:

=VLOOKUP2(A2:A19;1;"Дмитро";3;4)

Статті по темі:

Поєднання таблиць (VLOOKUP, ВПР)

VLOOKUP для поєднання по двом умовам (VLOOKUP3, ВПР3)

Швидке об'єднання великих таблиць (VLOOKUP2D, ВПР2D)