
Резюме
Для поиска и приблизительного совпадения на основе более чем одного критерия вы можете использовать формулу массива, основанную на ИНДЕКС и ПОИСКПОЗ, с помощью функции ЕСЛИ. В показанном примере формула G8 имеет следующий вид:
(=INDEX(D5:D10,MATCH(G7,IF(B5:B10=G6,C5:C10),1)))
Цель этой формулы - вернуть «размер» при задании животного и веса.
Примечание: это формула массива, которую необходимо вводить с помощью Control + Shift + Enter.
Объяснение
По сути, это просто формула ИНДЕКС / ПОИСКПОЗ. Проблема в этом случае заключается в том, что нам нужно «отсеивать» посторонние записи в таблице, чтобы у нас остались только те записи, которые соответствуют животному, которое мы ищем.
Здесь это делается с помощью простой функции ЕСЛИ:
IF(B5:B10=G6,C5:C10)
Этот фрагмент кода проверяет значения в B5: B10, чтобы узнать, соответствуют ли они значению в G6 (животное). Если есть совпадение, возвращаются соответствующие значения в C5: C11. Если совпадений нет, возвращается ЛОЖЬ. Когда G6 содержит «кота», результирующий массив выглядит так:
(ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; 5; 10; 15)
Это входит в функцию ПОИСКПОЗ как массив. Значение поиска для совпадения поступает из G7, который содержит вес (9 фунтов в примере).
Обратите внимание, что match настраивается на приблизительное совпадение, устанавливая match_type равным 1, и для этого требуется, чтобы значения в C5: C11 были отсортированы.
ПОИСКПОЗ возвращает положение веса в массиве, и оно передается в функцию ИНДЕКС как номер строки. Lookup_array для INDEX - это размеры в D5: D10, поэтому INDEX возвращает размер, соответствующий позиции, сгенерированной MATCH (число 4 в показанном примере).