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).