Formule Excel: rechercher la chaîne la plus longue avec des critères -

Formule générique

(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))

Sommaire

Pour rechercher la chaîne la plus longue d'une plage avec des critères, vous pouvez utiliser une formule matricielle basée sur INDEX, MATCH, LEN et MAX. Dans l'exemple illustré, la formule en F6 est:

(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))

Où «noms» est la plage nommée C5: C14 et «classe» est la plage nommée B5: B14.

Remarque: il s'agit d'une formule matricielle et doit être saisie avec Ctrl + Maj + Entrée.

Explication

Le cœur de cette formule est la fonction MATCH, qui localise la position de la chaîne la plus longue à l'aide des critères fournis:

MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)

Remarque MATCH est configuré pour effectuer une correspondance exacte en fournissant zéro pour le type de correspondance. Pour la valeur de recherche, nous avons:

LEN(names)*(class=F5)

La fonction LEN renvoie un tableau de résultats (longueurs), un pour chaque nom de la liste où class = "A" de la cellule F5:

(5;6;8;6;6;0;0;0;0;0)

Cela filtre efficacement toute la classe B et la fonction MAX renvoie alors la plus grande valeur, 8.

Pour construire un tableau de recherche, nous utilisons la même approche:

LEN(names)*(class=F5)

Et obtenez le même résultat:

(5;6;8;6;6;0;0;0;0;0)

Après l'exécution de LEN et MAX, nous avons une formule MATCH avec ces valeurs:

MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))

MATCH renvoie alors la position 8 dans la liste, 3, qui alimente INDEX comme ceci:

=INDEX(names,3)

Enfin, INDEX renvoie consciencieusement la valeur en 3ème position des noms , qui est "Jonathan".

Articles intéressants...