J'ai une feuille Excel avec des valeurs de texte, par exemple dans A1: "Ceci est le texte". J'ai besoin de trouver la position du dernier caractère d'espace. Existe-t-il une formule Excel qui me donnera le résultat que je veux? J'ai essayé FIND et SEARCH, mais ceux-ci commencent par la gauche, ce dont j'ai besoin est de commencer par la droite.
17
Réponses:
Si par valeur vide vous voulez dire "espace", et par XLS vous voulez dire Excel, alors vous pouvez utiliser cette formule (en supposant que le test dans lequel vous voulez trouver le dernier espace se trouve
A1
):Vous pouvez le diviser en 3 parties:
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
vous donne le nombre d'espaces, appelons-lex
,SUBSTITUTE(A1," ","☃",[x])
remplacera lex
e espace (donc le dernier) par un bonhomme de neige,FIND("☃",[...])
vous donnera la position du bonhomme de neige. Quelle est la position du dernier espace.la source
Voici une autre façon, tous les personnages sont autorisés en A1 (même les bonhommes de neige!)
=LOOKUP(2^15,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))))
FIND
a un troisième argument qui définit la position de début de la recherche, si vous appliquez un tableau de valeurs entières 1 à n (où n est la longueur de A1) à ce paramètre, vous obtenez un tableau avec le dernier nombre étant la position du dernier espace.LOOKUP
extrait ensuite ce nombre en recherchant une valeur supérieure à toute valeur qui pourrait être trouvée dans ce tableau, auquel cas le dernier nombre est trouvéDans
Excel 2010
ou plus tard, vous pouvez également utiliser uneAGGREGATE
fonction comme celle-ci=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)
FIND
renvoie le même tableau que précédemment et en utilisant 14 comme 1er argument deAGGREGATE
et 1 comme dernier, vous obtenez la plus grande valeur du tableau, tout en ignorant les erreurs [6]la source
"1:"&LEN(A1)
évaluée à "1:12" - c'est une chaîne que ROW ne peut pas traiter mais INDIRECT convertit une chaîne en une référence valide que ROW peut gérer afin que ROW (1:12) vous donne ensuite {1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}barry larry houdini
alors FIND retournera ce tableau{6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
et LOOKUP et / ou AGGREGATE en prendra la dernière / plus grande valeur numérique, c'est-à-dire 12