Alors, comment obtenir une sous-chaîne de la nième position à la fin de la chaîne?
Saisie à la cellule A1 Nom: Thomas B.
Résultat attendu: Thomas B.
Je connais un moyen de le faire mais je me demande s'il existe d'autres moyens élégants qu'eux? (une sorte de = RIGHT (A1, -6)
....)
= MID (A1, 6, 999999)
// 999999 ne semble pas si bon
= MID (A1, 6, LEN (A1) - 5)
// doit calculer 2 fois, d'abord obtenir len, puis obtenir la sous-chaîne, semble trop fonctionner? p >
4 Réponses :
Eh bien, vos deux méthodes fonctionnent déjà, mais vous pouvez également utiliser celle-ci:
=TRIM(MID(A1,FIND(":",A1)+1,100))
(vous avez presque eu celle-ci dans votre propre question)
ou celui-ci:
=RIGHT(A1,LEN(A1)-6)
(la fonction FIND () renvoie la position numérique d'une chaîne de recherche, elle est donc idéale pour faire des sous-chaînes dynamiques)
Merci d'avoir suggéré la fonction FIND ()
avec dynamique pour Nom:
, Nom:
, nom:
, < code> Nom complet: ....
Pourquoi ne remplacez-vous pas simplement les six premiers caractères par une chaîne vide?
=SUBSTITUTE(A1;LEFT(A1;6);"";1)
C'est un bon moyen si amélioré à = SUBSTITUTE (A1, LEFT (A1; 6), "", 1)
ou = SUBSTITUTE (A1, "Name:", "", 1 )
dans le cas où 6 premiers caractères sont fixés
Qu'en est-il asdfghJKLasdfgh? Cela rendra JKL.
@ z32a7ul: vous avez raison. J'ai édité ma réponse comme mentionné par Pham (ajouté le "1" à la fin).
Une autre possibilité est que vous créez une constante avec la valeur 2 ^ 31-1 (= 2147483647), qui est la valeur entière maximale signée sur les systèmes 32 bits, et vous lui donnez un joli nom, comme MaxInt, puis votre La première formule sera également efficace et jolie:
=MID(A1, 6, MaxInt)
Vous pouvez ajouter le nom avec Ctrl + F3. Si vous êtes intéressé par les calculs rapides, le donner comme 2147483647 plutôt que 2 ^ 31-1 peut avoir un (très petit) avantage.
Comme Dominique l'a déjà écrit: "Pourquoi ne remplacez-vous pas simplement les six premiers caractères par une chaîne vide?"
=SUBSTITUTE(A1,LEFT(A1,6),"",1) =REPLACE(A1,1,6,"")
J'ai fait une mesure du temps, mais la différence est inférieure à une seconde à 50000 enregistrements (pour LEFT
, MID
, REPLACE
& SUSTITUTE
). Donc j'ai peur que ELEGANCE soit tout ce que vous allez obtenir.
J'ai créé cette étude parce que lorsque vous dites à partir du n-ième caractère, votre n
-ième caractère est 7 (vos MID
-s sont faux), mais vous voulez supprimer les premiers n-1
( 6 ) caractères. Ainsi, selon la façon dont vous formulez votre question, vous pourriez avoir une approche différente dans RIGHT
ou MID
, et vous vous souviendrez de REPLACE
et SUBSTITUTE
ou vous ne pouvez pas.
Obtenir la chaîne du N-ième caractère à la fin, par exemple 7
=RIGHT(A1,LEN(A1)-(FIND(B1,A1)+LEN(B1))+1) =RIGHT(A1,LEN(A1)-FIND(B1,A1)-LEN(B1)+1) =RIGHT(A1,LEN(A1)-FIND(": ",A1)-LEN(": ")+1) =MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1)-(FIND(B1,A1)+LEN(B1))+1) =MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1)-FIND(B1,A1)-LEN(B1)+1) =MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1)) =MID(A1,FIND(": ",A1)+LEN(": "),LEN(A1)-FIND(": ",A1)-LEN(": ")+1) =MID(A1,FIND(": ",A1)+LEN(": "),LEN(A1))
=RIGHT(A1,LEN(A1)-(FIND(B1,A1))) =RIGHT(A1,LEN(A1)-(FIND(" ",A1))) =MID(A1,FIND(B1,A1)+1,LEN(A1)-FIND(B1,A1)) =MID(A1,FIND(B1,A1)+1,LEN(A1)) =MID(A1,FIND(" ",A1)+1,LEN(A1)-FIND(" ",A1)) =MID(A1,FIND(" ",A1)+1,LEN(A1))
=RIGHT(A1,LEN(A1)-B1) =RIGHT(A1,LEN(A1)-6) =MID(A1,B1+1,LEN(A1)-B1) =MID(A1,B1+1,LEN(A1)) =MID(A1,7,LEN(A1)-6) =MID(A1,7,LEN(A1))
=MID(A1,7,LEN(A1))
Supprimer les N premiers caractères d'une chaîne, par exemple 6
=MID(A1,B1,LEN(A1)-(B1-1)) =MID(A1,B1,LEN(A1)-B1+1) =MID(A1,B1,LEN(A1)) =MID(A1,7,LEN(A1)-6)
Obtenir une chaîne après un caractère, par exemple ""
=RIGHT(A1,LEN(A1)-6)
Obtenir une chaîne après une chaîne, par exemple ":"
=RIGHT(A1,LEN(A1)-(B1-1)) =RIGHT(A1,LEN(A1)-B1+1)
Retour à Supprimer N premiers caractères d'une chaîne, par exemple 6
=REPLACE(A1,1,6,"")
Je vous remercie. J'ai été confronté à ce problème hier et j'ai du mal à le décrire clairement dans ma question. Comme je ne suis pas habitué à exceller les formules, je finis par trouver les moyens ci-dessus pour le faire. Pour votre "petite étude", l'OMI, ils pourraient tous s'appliquer à mon problème. Et pour mon cas particulier, je pense que = REPLACE (A1,1,6, "")
devrait être le plus élégant
Vous n'avez pas besoin de soustraire 5 dans le deuxième exemple. Cependant, je doute fort que la micro-optimisation des performances soit un problème dont vous devez vous soucier.
Vos formules
MID
semblent contredire votre titre. Voulez-vous obtenir la sous-chaîne du n ème caractère du début ou de la fin d'une chaîne?@Jerry nième depuis le début de la chaîne, récupère tous les caractères jusqu'à la fin de la chaîne. Je vais essayer de modifier ce titre
@ KenY-N Aujourd'hui, je suis juste confronté à ce problème, d'abord je pense que
= RIGHT (A1, -6)
est ok, mais cela ne fonctionnera pas donc je recherche et depuisMID code > fonction J'écris ces 2 formules ci-dessus. Je me demande s'il existe d'autres façons élégantes d'aller. Si je n'en trouve pas, j'utiliserai le `= MID (A1, 6, LEN (A1)). Je vous remercie.