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

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

Як бачимо, в нас є позичальники з однаковими прізвищами та кредитні угоди з однаковими номерами. Поєднати звичайною функцією VLOOKUP буде проблематично, оскільки вона поєднує лише по одній умові та лише перше знайдене значення.

Переробимо звичний нам VLOOKUP для підстановки значень по двом умовам.

Відкрийте меню Сервіс - Макрос - Редактор Visual Basic, вставте новий модуль (меню Insert - Module) и скопіюйте туди текст цієї функції:

Function VLOOKUP3(Table1 As Range, SearchValue1 As Variant, Table2 As Range, SearchValue2 As Variant,_
					 ResultColumn As Range)
                     
        Dim i As Integer
                   
        For i = 1 To Table1.Rows.Count
                If Table1.Cells(i, 1) = SearchValue1 Then
                If Table2.Cells(i, 1) = SearchValue2 Then
                VLOOKUP3 = ResultColumn.Cells(i, 1)
                    Exit For
                    End If
                End If
                Next i
                
End Function 

Закрийте редактор Visual Basic і поверніться в Excel.

Тепер в Мастері функцій в категорії Визначені користувачем можна знайти нашу функцію VLOOKUP3 і скористатися нею. Синтаксис функції наступний:

=VLOOKUP3(діапазон1; шукане_значення1; діапазон2; шукане_значення2; діапазон з якого підставляємо значення)

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

=VLOOKUP3($A$2:$A$11;A18;$B$2:$B$11;B18;$C$2:$C$11)

Також, не забуваємо фіксувати діапазони знаком долара ($), для того щоб нам не з'їжджали діапазони при копіюванні формули (для швидкого фіксування можна також скористатися клавішою F4).

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

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

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

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