Формула Excel: найти самую длинную строку с критериями -

Содержание

Общая формула

(=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)

Наконец, ИНДЕКС послушно возвращает значение в третьей позиции имен , то есть «Джонатан».

Интересные статьи...