web-dev-qa-db-fra.com

J'ai besoin de trouver le dernier espace dans une cellule XLS

J'ai une feuille Excel avec des valeurs de texte, par exemple dans A1: "Ceci est le texte". Je dois trouver la position du dernier caractère de l'espace. Existe-t-il une formule Excel qui me donnera le résultat souhaité? J'ai essayé de rechercher et de rechercher, cependant ceux-ci commencent de gauche, ce dont j'ai besoin est de partir de droite.

11
Dheer

Si, par valeur vide, vous voulez dire "espace" et par XLS, vous voulez dire Excel, vous pouvez utiliser cette formule (en supposant que le test dans lequel vous voulez trouver le dernier espace est dans A1):

=FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))

Vous pouvez le diviser en 3 parties:

  • LEN(A1)-LEN(SUBSTITUTE(A1," ","")) vous donne le nombre d'espaces, appelons-le x,
  • SUBSTITUTE(A1," ","☃",[x]) remplacera le xth 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.
23
m4573r

Voici une autre façon, tous les personnages sont autorisés dans 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épart de la recherche. Si vous appliquez un tableau de valeurs entières de 1 à n (où n est la longueur de A1) à ce paramètre, vous obtenez un tableau avec le dernier nombre représentant la position de le dernier espace.

LOOKUP extrait ensuite ce nombre en recherchant une valeur supérieure à toute valeur pouvant figurer dans ce tableau, auquel cas le nombre dernier est trouvé.

Dans Excel 2010 ou version ultérieure, vous pouvez également utiliser la fonction AGGREGATE comme ceci

=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)

FIND retourne le même tableau qu'auparavant et en utilisant 14 comme premier argument de AGGREGATE et 1 comme dernier, vous obtenez la plus grande valeur du tableau, tout en ignorant les erreurs [6]

7
barry houdini