Fórmula do Excel: Encontre a string mais longa com critérios -

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".

Artigos interessantes...