Como obter a extensão do arquivo no MS Excel?

10

Eu tenho uma coluna contendo caminhos de arquivo. Eu quero fazer outra coluna que contenha apenas as extensões dos caminhos. Como posso fazer isso no Microsoft Excel?

    
por Nam G VU 17.05.2010 / 08:39

5 respostas

20
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")

Esta fórmula será útil se você tiver mais de um ponto no nome do arquivo

    
por 17.05.2010 / 09:45
4

Extraído de another answer (alterado para procurar pontos e não espaços):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
    
por 11.11.2013 / 22:16
2

Resposta Cyril funciona apenas se a extensão tiver 3 ou 4 caracteres e a resposta user273281 não funcionar quando houver . (períodos) no nome do arquivo.

Por isso, descobri uma nova maneira de conseguir isso,

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))

Nota: O aswer do user273281 não funcionou para o caso em que o nome do arquivo era 1. Macro based file.zip . Ele retorna . Macro based file.zip

    
por 30.05.2016 / 11:36
0

Supondo que você tenha extensões bem formatadas, você pode fazer isso rapidamente como =RIGHT(A1,3) . Uma solução mais robusta encontraria o índice do . mais à direita e extrairia os caracteres restantes.

    
por 17.05.2010 / 08:50
0

Eu me deparei com isso, que é a solução mais simples que já vi ...

=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")

Funciona porque separa todos os caracteres após o último período de todos os outros caracteres por 50 períodos ou o número que você escolher. Você pode então selecionar os 50 caracteres mais à direita sabendo que não está selecionando nada além de seus caracteres de extensão e vários períodos. Substitua os períodos e você está pronto para ir.

Fonte

Alternativa: análise de XML

Um truque que às vezes uso para análise de cadeias em geral é aproveitar a função FilterXML() (Excel 2013 e posterior). A estratégia básica é usar Substitute() para formatar sua sequência de maneira que ela seja analisada em elementos em uma cadeia xml e, em seguida, você pode usar xpath sintaxe para navegar convenientemente pelos seus elementos analisados. Usando essa estratégia, obter uma extensão seria assim ...

=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")

Se você não estiver familiarizado com xml, isso pode parecer intimidante, mas se você conseguir entender o que está acontecendo, acho que é mais limpo, mais flexível e mais fácil de lembrar do que as abordagens alternativas usando len (), substituto (), etc. Uma razão pela qual é melhor porque há apenas uma referência de célula.

Caracteres ilegais

Existem dois caracteres permitidos nos caminhos, mas não no xml: & e '

A equação acima funcionará se esses caracteres não estiverem presentes, caso contrário, eles precisarão ser tratados com algo assim ...

=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")

Exemplo

Suponha que tenhamos um caminho de arquivo desagradável como este:

C: \ Folder1 \ Folder2 \ (caracteres feios! @ # $% ^ () _ + = {} ;;, ') \ two.dots.LongExt

1.) A parte Substitution() irá convertê-lo em uma string xml como esta ...

<A>
    <p>
        C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,')\two
    </p>
    <p>
        .dots
    </p>
    <p>
        .txt
    </p>
</A>

2.) Uma vez formatado assim, é trivial escolher o último elemento p usando a sintaxe xpath //p[last()] .

    
por 02.02.2018 / 23:39