
Formule générique
=TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),MAX(1,FIND("@",SUBSTITUTE(A1," ",REPT(" ",99)))-50),99))
Sommaire
Pour extraire un mot contenant un texte spécifique, vous pouvez utiliser une formule basée sur plusieurs fonctions, notamment TRIM, LEFT, SUBSTITUTE, MID, MAX et REPT. Vous pouvez utiliser cette formule pour extraire des éléments tels que des adresses e-mail ou d'autres sous-chaînes avec un identifiant unique.
Dans l'exemple illustré, la formule en C5 est:
=TRIM(MID(SUBSTITUTE(B5," ",REPT(" ",99)),MAX(1,FIND("@",SUBSTITUTE(B5," ",REPT(" ",99)))-50),99))
Explication
L'essentiel: cette formule «inonde» l'espace entre les mots dans une chaîne de texte avec un grand nombre d'espaces, trouve et extrait la sous-chaîne d'intérêt, et utilise la fonction TRIM pour nettoyer le désordre.
Travaillant de l'intérieur vers l'extérieur, le texte original en B5 est inondé d'espaces en utilisant SUBSTITUTE:
SUBSTITUTE(B5," ",REPT(" ",99))
Cela remplace chaque espace par 99 espaces.
Remarque: 99 est juste un nombre arbitraire qui représente le mot le plus long à extraire.
Ensuite, la fonction FIND localise le caractère spécifique (dans ce cas, "@") à l'intérieur du texte inondé:
FIND("@",SUBSTITUTE(B5," ",REPT(" ",99)))-50
FIND renvoie la position du "@" dans ce texte, dont 50 est soustrait. La soustraction de 50 "ramène" effectivement la position à un endroit quelconque au milieu des espaces précédant la sous-chaîne d'intérêt. Dans l'exemple illustré, la position calculée est 366.
La fonction MAX est utilisée pour gérer le problème de la sous-chaîne apparaissant en premier dans le texte. Dans ce cas, la position sera négative et MAX est utilisé pour se remettre à 1.
Avec une position de départ établie, MID est utilisé pour extraire 99 caractères de texte, à partir de 366 du texte en B5, à nouveau inondé d'espace:
MID(SUBSTITUTE(B5," ",REPT(" ",99)),366,99)
Cela extrait la sous-chaîne d'intérêt, avec beaucoup de caractères d'espace avant et après.
Enfin, la fonction TRIM est utilisée pour couper les espaces de début et de fin, et renvoie la sous-chaîne contenant le caractère spécial.