Comment obtenir l'extension de fichier dans MS Excel?

10

J'ai une colonne contenant des chemins de fichiers. Je veux créer une autre colonne contenant uniquement les extensions des chemins. Comment puis-je faire cela dans Microsoft Excel?

Nam G VU
la source
1
Pour ceux qui cherchent comment faire cela dans la feuille de calcul Google, vous pouvez utiliserREGEXEXTRACT(A1, "\.([^.]*)$")
Joe

Réponses:

20
=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

Kirill
la source
2
Notez que cela ne fonctionne que pour les extensions de fichier de quatre caractères ou moins.
Tim Robinson
1
Vous pouvez simplement changer le 5 en 6 ou autre chose, non?
Devil's Advocate
Non, cela cause des problèmes.
Devil's Advocate
4

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,".","")))))
user273281
la source
fonctionne un régal! Merci pour la solution rapide de copier / coller. Fonctionne pour les extensions de fichier avec des extensions de fichier de 2 à 7 caractères avec des chemins complets et une notation des espaces de noms dans le nom de fichier.
Zephan Schroeder
2

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

Adarsh
la source
0

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.

ta.speot.is
la source
En lisant votre question, c'est la réponse que j'aurais donnée.
VerGuy
Je pense que la vraie question ici est: comment trouver le "" le plus à droite. dans Excel.
petersohn
L'extension n'est pas toujours en 3 caractères. @pertersohn: Oui, vous avez raison.
Nam G VU
0

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.

La source

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()].

u8it
la source