
Общая формула
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Резюме
Чтобы найти самую длинную строку в диапазоне с критериями, вы можете использовать формулу массива, основанную на INDEX, MATCH, LEN и MAX. В показанном примере формула в F6:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Где «names» - именованный диапазон C5: C14, а «class» - именованный диапазон B5: B14.
Примечание: это формула массива, и ее нужно вводить с помощью Ctrl + Shift + Enter.
Объяснение
Ядром этой формулы является функция ПОИСКПОЗ, которая определяет положение самой длинной строки, используя указанные критерии:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Примечание. ПОИСКПОЗ настроено на выполнение точного совпадения путем предоставления нуля для типа совпадения. Для значения поиска у нас есть:
LEN(names)*(class=F5)
Функция LEN возвращает массив результатов (длины), по одному для каждого имени в списке, где class = "A" из ячейки F5:
(5;6;8;6;6;0;0;0;0;0)
Это эффективно отфильтровывает весь класс B, а функция MAX затем возвращает наибольшее значение, 8.
Для построения поискового массива мы используем тот же подход:
LEN(names)*(class=F5)
И получим тот же результат:
(5;6;8;6;6;0;0;0;0;0)
После выполнения LEN и MAX у нас есть формула MATCH со следующими значениями:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
Затем ПОИСКПОЗ возвращает позицию 8 в списке, 3, которая передается в ИНДЕКС следующим образом:
=INDEX(names,3)
Наконец, ИНДЕКС послушно возвращает значение в третьей позиции имен , то есть «Джонатан».