Menu

Поиск по нескольким условиям в Excel (эксель): ПРОСМОТРX

=ПРОСМОТРX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7) возвращает значение из строки, где столбец A совпадает с E2, а столбец B с F2. Вариант с ИНДЕКС и ПОИСКПОЗ, вспомогательный столбец для ВПР и ФИЛЬТР для всех совпадений.

Каждая таблица на этой странице живая: измените число или формулу, и она пересчитается.

=ПРОСМОТРX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7) возвращает цену из строки, где товар равен E2 и размер равен F2. Каждое сравнение проверяет все строки, их произведение равно 1 только там, где оба условия истинны, и ПРОСМОТРX (по-английски XLOOKUP) ищет эту 1. Ей нужен Excel 2021 или Microsoft 365; вариант с ИНДЕКС и ПОИСКПОЗ ниже работает в любой версии. Таблицы на этой странице показывают английскую запись, но формулы в них можно вводить и по-русски, с точкой с запятой.

Цена по товару и размеру
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50TeaLarge$3.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ПРОСМОТРX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7)

Tea и Large сходятся в строке 5, поэтому G2 возвращает $3.00. Выберите Juice и Small: снова $3.00, но из другой строки. Добавьте четвёртый аргумент на случай, когда ни одна строка не подходит под оба условия: =ПРОСМОТРX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7;"No such item").

Как работают перемноженные условия

A2:A7=E2 сравнивает каждый товар с E2 и возвращает шесть значений ИСТИНА или ЛОЖЬ. Перемножение двух таких списков превращает ИСТИНА в 1, а ЛОЖЬ в 0, и строка равна 1, только если она равна 1 в обоих. Столбец D показывает этот список, выведенный одной формулой.

Массив, в котором ищет ПРОСМОТРX
D2
ABCDEFG
1ProductSizePriceBoth matchProductSize
2CoffeeSmall$2.500TeaLarge
3CoffeeLarge$3.500
4TeaSmall$2.000
5TeaLarge$3.001
6JuiceSmall$3.000
7JuiceLarge$4.000
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =(A2:A7=F2)*(B2:B7=G2)

Только D5 равна 1. Измените F2 или G2, и 1 переместится. Каждое дополнительное условие это ещё один множитель *(диапазон=значение), и условия не обязаны быть равенствами: *(C2:C7<3) добавляет «цена меньше 3». Каждый диапазон должен охватывать одни и те же строки (A2:A7, B2:B7, C2:C7): если диапазон результата другого размера, чем условия, ПРОСМОТРX возвращает #ЗНАЧ! (по-английски #VALUE!; таблицы на этой странице показывают ошибки под английскими именами).

ИНДЕКС и ПОИСКПОЗ по нескольким условиям

Для Excel 2019 и старше ПОИСКПОЗ может искать 1 в том же массиве, а ИНДЕКС возвращает цену с этой позиции.

Два условия через ИНДЕКС и ПОИСКПОЗ
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50CoffeeLarge$3.50
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ИНДЕКС(C2:C7;ПОИСКПОЗ(1;(A2:A7=E2)*(B2:B7=F2);0))

Coffee и Large это позиция 2 массива, и ИНДЕКС возвращает $3.50. В Excel 2019 и старше это формула массива: нажимайте Ctrl+Shift+Enter (Cmd+Shift+Enter на Mac) вместо Enter, и Excel покажет её в фигурных скобках. Обычный Enter там чаще всего даёт #Н/Д или #ЗНАЧ!. В Excel 365 достаточно Enter. Вариант с одним условием описан на странице ИНДЕКС и ПОИСКПОЗ.

Объединить условия в один ключ

Другой способ: превратить два условия в одно, объединив их. ВПР нужны объединённые значения во вспомогательном столбце в начале таблицы (этот вариант показан на странице ВПР). ПРОСМОТРX может объединить диапазоны прямо в формуле, так что вспомогательный столбец не нужен.

Товар и размер в одном ключе
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50JuiceLarge$4.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ПРОСМОТРX(E2&"|"&F2;A2:A7&"|"&B2:B7;C2:C7)

A2:A7&"|"&B2:B7 строит шесть ключей вроде Juice|Large, и ПРОСМОТРX находит среди них Juice|Large: $4.00. Ставьте разделитель между частями. Без него «AB» и «C» дают при объединении то же «ABC», что «A» и «BC», и поиск может вернуть не ту строку.

Если нужное значение числовое и каждое сочетание встречается один раз, СУММЕСЛИМН (SUMIFS) даёт тот же ответ вообще без массива: =СУММЕСЛИМН(C2:C7;A2:A7;E2;B2:B7;F2). Когда ничего не совпало, она возвращает 0, а не ошибку, и это может скрыть опечатку.

Все совпадения через ФИЛЬТР

ПРОСМОТРX и ИНДЕКС с ПОИСКПОЗ возвращают первую подходящую строку. Когда подходят несколько строк и нужны все, используйте ФИЛЬТР (FILTER) с теми же условиями.

Все заказы телефонов в North
F2
ABCDEFG
1RegionProductQuarterSalesMatches
2NorthLaptopQ1120Q1210
3NorthPhoneQ1210Q2225
4SouthLaptopQ195Q3240
5NorthPhoneQ2225
6SouthPhoneQ2180
7NorthLaptopQ2135
8NorthPhoneQ3240
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ФИЛЬТР(C2:D8;(A2:A8="North")*(B2:B8="Phone"))

Три строки подходят под North и Phone, поэтому F2 выводит их кварталы и продажи в F2:G4. Замените A3 на South, и список сократится до двух строк. В русском Excel формула пишется =ФИЛЬТР(C2:D8;(A2:A8="North")*(B2:B8="Phone")). Если ни одна строка не подходит, ФИЛЬТР возвращает #ВЫЧИСЛ! (#CALC!); третий аргумент, например "None", показывает вместо этого текст. Другие возможности описаны на странице ФИЛЬТР.

Практика: три условия

Продажи по региону, товару и кварталу
G4
ABCDEFG
1RegionProductQuarterSalesRegionSouth
2NorthLaptopQ1120ProductLaptop
3NorthLaptopQ2135QuarterQ2
4NorthPhoneQ1210Sales
5SouthLaptopQ195
6SouthPhoneQ2180
7SouthLaptopQ2110
8NorthPhoneQ2225
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.

Ваша очередь: Верните в G4 продажи для региона из G1, товара из G2 и квартала из G3.

Часто задаваемые вопросы

Как использовать ПРОСМОТРX с несколькими условиями?

Перемножьте по одному сравнению на каждое условие и ищите 1: =ПРОСМОТРX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7). Каждое сравнение даёт ИСТИНА или ЛОЖЬ для каждой строки, произведение равно 1 только там, где все дают ИСТИНА, и ПРОСМОТРX возвращает первую такую строку.

Как сделать ИНДЕКС и ПОИСКПОЗ по двум условиям?

Поместите те же перемноженные условия внутрь ПОИСКПОЗ: =ИНДЕКС(C2:C7;ПОИСКПОЗ(1;(A2:A7=E2)*(B2:B7=F2);0)). В Excel 2019 и старше подтверждайте её через Ctrl+Shift+Enter (Cmd+Shift+Enter на Mac).

Может ли ВПР искать по двум условиям?

Напрямую нет. Добавьте в начало таблицы вспомогательный столбец, который объединяет два значения, например =A2&"|"&B2, и ищите объединённое значение: =ВПР(E2&"|"&F2;helper_table;col;ЛОЖЬ).

Может ли СУММЕСЛИМН заменить поиск по двум условиям?

Да, когда значение числовое и каждое сочетание встречается один раз: =СУММЕСЛИМН(C2:C7;A2:A7;E2;B2:B7;F2). Если ни одна строка не подходит, она возвращает 0 вместо #Н/Д, а если сочетание встречается дважды, складывает значения.

Как искать по условиям через ИЛИ?

Складывайте условия, а не перемножайте: (A2:A7="Tea")+(A2:A7="Juice") равно 1 или больше там, где выполняется любое из них. Ищите значение больше 0, например так: =ПРОСМОТРX(ИСТИНА;((A2:A7="Tea")+(A2:A7="Juice"))>0;C2:C7).

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ