J'ai une feuille de calcul Excel contenant une liste de chaînes. Chaque chaîne est composée de plusieurs mots, mais le nombre de mots dans chaque chaîne est différent.
En utilisant des fonctions Excel intégrées (pas de VBA), existe-t-il un moyen d'isoler le dernier mot de chaque chaîne?
Exemples:
Êtes-vous considéré comme humain? -> humain? Négatif, je suis un popsicle de viande -> popsicle Aziz! Lumière! -> Lumière!
excel
excel-formula
e.James
la source
la source
Réponses:
Celui-ci est testé et fonctionne (basé sur le post original de Brad):
Si vos chaînes d'origine peuvent contenir un tube "|" caractère, puis remplacez les deux dans ce qui précède par un autre caractère qui n'apparaîtra pas dans votre source. (Je soupçonne que l'original de Brad a été cassé car un caractère non imprimable a été supprimé dans la traduction).
Bonus: Comment ça marche (de droite à gauche):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
- Nombre d'espaces dans la chaîne d'origineSUBSTITUTE(A1," ","|", ... )
- Remplace uniquement l' espace final par un|
FIND("|", ... )
- Trouve la position absolue de celui remplacé|
(qui était l'espace final)Right(A1,LEN(A1) - ... ))
- Renvoie tous les caractères après cela|
EDIT: pour tenir compte du cas où le texte source ne contient pas d'espaces, ajoutez ce qui suit au début de la formule:
faire la formule entière maintenant:
Ou vous pouvez utiliser la
=IF(COUNTIF(A1,"* *")
syntaxe de l'autre version.Lorsque la chaîne d'origine peut contenir un espace à la dernière position, ajoutez une fonction de découpage tout en comptant tous les espaces: Rendre la fonction la suivante:
la source
C'est la technique que j'ai utilisée avec beaucoup de succès:
Pour obtenir le premier mot d'une chaîne, changez simplement de DROITE à GAUCHE
Remplacez également A1 par la cellule contenant le texte.
la source
" "
par mon délimiteur. Les deux100
semblent le limiter à une chaîne de 100 caractères si je ne me trompe pas=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(A1, ".", REPT(".", 100)), 100), ".", ""))
Une version plus robuste de la réponse de Jerry:
Cela fonctionne quelle que soit la longueur de la chaîne, les espaces de début ou de fin, ou quoi que ce soit d'autre et c'est toujours assez court et simple.
la source
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
pour obtenir l'extension de fichier.SUBSTITUTE
permet de fonctionner pour n'importe quel caractère, pas seulement pour les espaces.=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),"/",REPT("/",LEN(TRIM(A1)))),LEN(TRIM(A1))),"/",""))
, où "/" est le caractère de délimitation." ; "
(un point-virgule entouré par des espaces) avec une valeur d'entrée:"Technology Sprint 24 ; Sprint 4"
il retourne:"; Sprint 4"
. J'utilise la solution adaptée par: @PProteus.TRIM(A1)
par:TRIM(SUBSTITUTE(A1, "strDelimeter", ";"))
à tous les endroits, afin d'avoir un nouveau délimiteur de caractère:";"
ou encore mieux en utilisant lachar()
fonction pour trouver un personnage vraiment inattendu.TRIM
fonction après avoir ajouté la secondeSUBSTITUTE
pour la solution de cas général à caractère unique. La formule fournit le résultat attendu en éliminant cette partie:=SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),";",REPT(";",LEN(TRIM(A1)))),LEN(TRIM(A1))),";","")
J'ai trouvé ceci sur google, testé dans Excel 2003 et cela fonctionne pour moi:
[modifier] Je n'ai pas assez de représentants pour commenter, donc cela semble le meilleur endroit ... La réponse de BradC ne fonctionne pas non plus avec les espaces de fin ou les cellules vides ...
[2ème modification] en fait, cela ne fonctionne pas pour des mots simples non plus ...
la source
C'est très robuste - cela fonctionne pour les phrases sans espaces, les espaces de début / de fin, plusieurs espaces, plusieurs espaces de début / de fin ... et j'ai utilisé char (7) pour le délimiteur plutôt que la barre verticale "|" juste au cas où ce serait un élément de texte souhaité.
la source
Ceci est très propre et compact et fonctionne bien.
Il ne piège pas d'erreur pour aucun espace ou un mot, mais c'est facile à ajouter.
Modifier:
Cela gère les espaces de fin, les scénarios de mot unique et de cellules vides. Je n'ai pas trouvé le moyen de le casser.
la source
la source
Pour ajouter aux réponses de Jerry et Joe, si vous voulez trouver le texte AVANT le dernier mot, vous pouvez utiliser:
Avec `` Mon petit chat '' dans A1, cela donnerait `` Mon petit '' (où Joe et Jerry donneraient `` chat ''
De la même manière que Jerry et Joe isolent le dernier mot, cela ramène tout à gauche de cela (puis le rogne)
la source
Imaginez que la chaîne puisse être inversée. Alors c'est vraiment facile. Au lieu de travailler sur la chaîne:
vous travaillez avec
Avec
=LEFT(A1;FIND(" ";A1)-1)
en A2, vous obtenez"My"
avec (1) et"tac"
avec (2), qui est inversé"cat"
, le dernier mot de (1).Il existe quelques VBA pour inverser une chaîne. Je préfère la fonction VBA publique
ReverseString
.Installez ce qui précède comme décrit. Puis avec votre chaîne en A1, par exemple,
"My little cat"
et cette fonction en A2:vous verrez
"cat"
dans A2.La méthode ci-dessus suppose que les mots sont séparés par des blancs. La
IF
clause est pour les cellules contenant des mots uniques = pas de blanc dans la cellule. Remarque:TRIM
etCLEAN
la chaîne d'origine sont également utiles. En principe, il inverse la chaîne entière à partir de A1 et trouve simplement le premier vide dans la chaîne inversée qui est à côté du dernier mot (inversé) (c'est-à-dire"tac "
).LEFT
sélectionne ce mot et une autre inversion de chaîne reconstitue l'ordre d'origine du mot (" cat"
). Le-1
à la fin de l'FIND
instruction supprime le blanc.L'idée est qu'il est facile d'extraire le premier (!) Mot d'une chaîne avec
LEFT
etFIND
ing le premier blanc. Cependant, pour le dernier mot (!), LaRIGHT
fonction n'est pas le bon choix lorsque vous essayez de faire cela car malheureusement FIND n'a pas d'indicateur pour la direction dans laquelle vous souhaitez analyser votre chaîne.Par conséquent, toute la chaîne est simplement inversée.
LEFT
etFIND
fonctionne normalement mais la chaîne extraite est inversée. Mais ce n'est pas grave une fois que vous savez comment inverser une corde. La premièreReverseString
instruction de la formule fait ce travail.la source
la source
Copiez dans une colonne, sélectionnez cette colonne et ACCUEIL> Edition> Rechercher et sélectionner, remplacer:
Replace All.
Il y a un espace après l'astérisque.
la source
J'ai traduit vers PT-BR, car j'en avais aussi besoin.
(Veuillez noter que j'ai changé l'espace en
\
parce que j'avais besoin du nom de fichier uniquement des chaînes de chemin.)la source
Une autre façon d'y parvenir est comme ci-dessous
la source
J'avais aussi une tâche comme celle-ci et quand j'ai eu fini, en utilisant la méthode ci-dessus, une nouvelle méthode m'est apparue: pourquoi ne faites-vous pas ceci:
Comment ça sonne?
la source