Réponses:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
Cette formule sera utile si vous avez plus d'un point dans le nom de fichier
Tiré d' une autre réponse (modifié pour rechercher des points et non des espaces):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
La réponse Cyril ne fonctionne que si l'extension est de 3 ou 4 caractères et la réponse de l'utilisateur273281 n'a pas fonctionné lorsqu'il y avait des .
(points) dans le nom de fichier.
Par conséquent, j'ai trouvé une nouvelle façon d'y parvenir,
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
Remarque: la réponse de l'utilisateur 273281 n'a pas fonctionné dans le cas où le nom de fichier était 1. Macro based file.zip
. Il revient. Macro based file.zip
En supposant que vous ayez des extensions bien formatées, vous pouvez le faire rapidement =RIGHT(A1,3)
. Une solution plus robuste trouverait l'index le plus à droite .
puis extrairait les caractères restants.
Je suis tombé sur cela, qui est la solution la plus simple que j'ai vue ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
Cela fonctionne car il sépare tous les caractères après la dernière période de tous les autres caractères par 50 périodes, ou quel que soit le nombre que vous choisissez. Vous pouvez ensuite sélectionner les 50 caractères les plus à droite en sachant que vous ne sélectionnez rien d'autre que vos caractères d'extension et un tas de périodes. Remplacez les périodes et vous êtes prêt à partir.
Alternative: analyse XML
Une astuce intéressante que j'utilise parfois pour l'analyse de chaînes en général consiste à tirer parti de la FilterXML()
fonction (Excel 2013 et versions ultérieures). La stratégie de base consiste Substitute()
à formater votre chaîne de manière à ce qu'elle soit analysée entre les éléments d'une chaîne xml, puis vous pouvez utiliser la syntaxe xpath pour naviguer facilement dans vos éléments analysés. En utilisant cette stratégie, obtenir une extension ressemblerait à ceci ...
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
Si vous n'êtes pas familier avec le xml, cela peut sembler intimidant, mais si vous pouvez comprendre ce qui se passe, je le trouve plus propre, plus flexible et plus facile à retenir que les approches alternatives utilisant len (), substitute (), etc. Une des raisons pour lesquelles c'est plus agréable est qu'il n'y a qu'une seule référence de cellule.
Personnages illégaux
Il y a deux caractères autorisés dans les chemins mais pas en xml: &
et'
L'équation ci-dessus fonctionnera si ces caractères ne sont pas présents, sinon, ils devront être manipulés quelque chose comme ça ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
Exemple
Supposons que nous ayons un chemin de fichier désagréable comme celui-ci:
C: \ Folder1 \ Folder2 \ (caractères laids! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt
1.) La Substitution()
partie le convertira en une chaîne xml comme celle-ci ...
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
2.) Une fois formaté comme ceci, il est trivial de choisir le dernier p
élément en utilisant la syntaxe xpath //p[last()]
.
REGEXEXTRACT(A1, "\.([^.]*)$")