
Fórmula genérica
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Resumo
Para encontrar a string mais longa em um intervalo com critérios, você pode usar uma fórmula de matriz baseada em INDEX, MATCH, LEN e MAX. No exemplo mostrado, a fórmula em F6 é:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Onde "nomes" é o intervalo nomeado C5: C14 e "classe" é o intervalo nomeado B5: B14.
Observação: esta é uma fórmula de matriz e deve ser inserida com control + shift + enter.
Explicação
O núcleo desta fórmula é a função MATCH, que localiza a posição da string mais longa usando os critérios fornecidos:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Nota MATCH é configurado para realizar uma correspondência exata, fornecendo zero para o tipo de correspondência. Para valor de pesquisa, temos:
LEN(names)*(class=F5)
A função LEN retorna uma matriz de resultados (comprimentos), um para cada nome na lista onde class = "A" da célula F5:
(5;6;8;6;6;0;0;0;0;0)
Isso filtra efetivamente toda a Classe B e a função MAX retorna o maior valor, 8.
Para construir uma matriz de pesquisa, usamos a mesma abordagem:
LEN(names)*(class=F5)
E obter o mesmo resultado:
(5;6;8;6;6;0;0;0;0;0)
Após a execução de LEN e MAX, temos uma fórmula MATCH com estes valores:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
MATCH então retorna a posição de 8 na lista, 3, que alimenta INDEX assim:
=INDEX(names,3)
Finalmente, INDEX devolve obedientemente o valor na 3ª posição de nomes , que é "Jonathan".