Приближенное и точное совпадение с несколькими критериями
Для того, чтобы найти приближенное соответствие на основе более одного критерия, вы можете использовать формулу массива, основанную на ИНДЕКС и ПОИСКПОЗ, с помощью функции ЕСЛИ.
Пример формулы в G7:
{ = ИНДЕКС (D5:D10; ПОИСКПОЗ (G6; ЕСЛИ( B5:B10 = G5; С5:С10);1))}
{ = INDEX (D5:D10; MATCH (G6; IF( B5:B10 = G5; С5:С10);1))}
Целью данной формулы является найти размер кошки, если известен ее вес.
По сути, это просто формула ИНДЕКС/ПОИСКПОЗ. Проблемой в данном случае является то, что нам нужно "отсеивать" посторонние записи в таблице.
Это делается с помощью простой функции ЕСЛИ:
ЕСЛИ( B5:B10 = G5; С5:С10 )
=IF( B5:B10 = G5; С5:С10 )
Она входит в функцию ПОИСКПОЗ как массив. Значение поиска для совпадений происходит от G6, который содержит вес (7 кг в примере).
Обратите внимание, что совпадение настроено для приблизительного совпадения, установив тип_сопоставления = 1, это нужно сортировки С5:С10.
ПОИСКПОЗ возвращает позицию веса в массиве, и передается ИНДЕКСУ как номер строки. Поисковый_массив для ИНДЕКСА размеры в D5:D10, так ИНДЕКС получает размер, соответствующий положению генерируемого совпадением (номер 6 в показанном примере).
Базовый ИНДЕКС ПОИСКПОЗ с приближенным сопоставлением
= ИНДЕКС( класс; ПОИСКПОЗ( балл; баллы; 1))
= INDEX( класс; MATCH( балл; баллы; 1))
Этот пример показывает, как использовать ИНДЕКС и ПОИСКПОЗ для получения класса из таблицы на основе заданного балла. Для этого требуется "приближенное соответствие", так как маловероятно , что реальная оценка существует в таблице.
Обратите внимание , что последний аргумент 1 (эквивалент ИСТИНЫ), что позволяет ПОИСКПОЗ выполнить приблизительное совпадение на значения , перечисленные в порядке возрастания. В этой конфигурации, ПОИСКПОЗ возвращает позицию первого значения, которое меньше или равно значению перекодировки.
Базовый ИНДЕКС ПОИСКПОЗ, точное совпадение
= ИНДЕКС( данные; ПОИСКПОЗ( значение; поиск_столбца ; ЛОЖЬ); столбец )
= INDEX( данные; MATCH( значение; поиск_столбца ; FALSE); столбец )
Эта формула использует ПОИСКПОЗ, чтобы получить позицию строки "Истории Игрушек" в таблице, и ИНДЕКС для извлечения значения в этой строке в колонке 2.
Обратите внимание, что последний аргумент имеет значение 0, что заставляет ПОИСКПОЗ найти точное совпадение.
ИНДЕКС с одним столбцом
В приведенном выше примере, ИНДЕКС получает массив, который содержит все данные в таблице. Тем не менее, вы можете легко переписать формулы для работы только с одним столбцом, что избавляет от необходимости указывать номер столбца:
= ИНДЕКС (С5:C9; ПОИСКПОЗ (H4; B5:B9;0)) // год
= INDEX (С5:C9; MATCH (H4; B5:B9;0)) // год
= ИНДЕКС (D5:D9; ПОИСКПОЗ (H4; B5:B9;0)) // ранг
= INDEX (С5:C9; MATCH (H4; B5:B9;0)) // // ранг
= ИНДЕКС (E5:E9; ПОИСКПОЗ (H4; B5:B9;0)) // продажи
= INDEX (С5:C9; MATCH (H4; B5:B9;0)) // // продажи
В каждом случае ИНДЕКС принимает массив одного столбца, который соответствует данным его извлечений, и ПОИСКПОЗ поставляет номер строки.
Чувствительное к регистру совпадение
{ = ПОИСКПОЗ (ИСТИНА; СОВПАД (диапазон; значение); 0)}
{ = MATCH (TRUE; EXACT (диапазон; значение); 0)}
Для выполнения чувствительного к регистру совпадения, вы можете использовать функцию СОВПАД вместе с ПОИСКПОЗ в формуле массива.
Сама по себе функция ПОИСКПОЗ не чувствительна к регистру, поэтому следующая формула получает 1:
= ПОИСКПОЗ ("ИВАН"; B5:B11; 0 )
= MATCH ("ИВАН"; B5:B11; 0 )
Чтобы добавить чувствительность к регистру, мы используем функцию СОВПАД:
СОВПАД ( B5:B11; E4 )
EXACT ( B5:B11; E4 )
Которая получает массив истина/ложь значения:
{ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}
{FALSE; FALSE; FALSE; TRUE; FALSE; FALSE; FALSE}
Этот массив переходит в функции ПОИСКПОЗ как массив. Для поиска, мы используем значение ИСТИНА с ПОИСКПОЗ, установленным в режим точного соответствия путем установки тип_сопоставления к нулю.
= ПОИСКПОЗ (ИСТИНА; { ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}; 0 )
= MATCH (TRUE; { FALSE; FALSE; FALSE; TRUE; FALSE; FALSE; FALSE}; 0 )
ПОИСКПОЗ затем получает позицию первого найденного истинного значения: 4.
Точный поиск соответствия с ИНДЕКС и ПОИСКПОЗ
{= ИНДЕКС (данные;ПОИСКПОЗ (ИСТИНА; СОВПАД(текст1; текст2 );0 ); номер_столбца )}
{= INDEX (данные;MATCH (TRUE; EXACT(текст1; текст2 );0 ); номер_столбца )}
Если вам нужно сделать, чувствительный к регистру поиск, вы можете сделать это с помощью формулы массива, которая использует ИНДЕКС, ПОИСКПОЗ и СОВПАД функции.
В примере, мы используем следующую формулу
={ИНДЕКС (B5:D12; ПОИСКПОЗ (ИСТИНА; СОВПАД (F5;B5:B12);0);3)}
={INDEX (B5:D12; MATCH (TRUE; EXACT (F5;B5:B12);0);3)}
Эта формула будет извлекать текст и числовые значения. Если вы хотите получить только числа, вы можете использовать формулу, основанную на СУММПРОИЗВ.
скачать файл
Автор проекта
Дмитрий Якушев
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель - помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Подписывайтесь на нас в соц.сетях:
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь