如何在MS Excel中获取文件扩展名?


10

我有一列包含文件路径。我想制作另一列,仅包含路径的扩展名。如何在Microsoft Excel中做到这一点?


1
对于希望在Google Spreadsheet中做到这一点的任何人,您都可以使用REGEXEXTRACT(A1, "\.([^.]*)$")
Joe Joe

Answers:



4

取自另一个答案(已更改为查找点而不是空格):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))

工作请客!感谢您提供快速复制/粘贴解决方案。适用于具有2到7个字符文件扩展名的文件扩展名,文件名中包含完整路径和命名空间符号。
Zephan Schroeder

2

仅当扩展名为3或4个字符且.文件名中包含(句点)时,user273281应答不起作用时,Cyril应答才起作用。

因此,我想出了一种新的方法来实现这一目标,

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

注意:在文件名是的情况下,user273281的aswer无效1. Macro based file.zip。它返回. Macro based file.zip


0

假设您的扩展名格式正确,则可以像一样快速完成此操作=RIGHT(A1,3)。一个更可靠的解决方案是找到最右边的索引,.然后提取其余字符。


阅读您的问题就是我会给出的答案。
VerGuy 2010年

我认为真正的问题是:如何找到最右边的“”。在Excel中。
petersohn

扩展名不能总是3个字符。@pertersohn:是的,你是对的。
Nam G VU 2010年

0

我遇到了这个,这是我见过的最简单的解决方案...

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

之所以起作用,是因为它将最后一个句点之后的所有字符与所有其他字符分隔开50个句点或您选择的任何数字。然后,您可以选择最右边的50个字符,知道自己除了扩展字符和一串句号外什么都没有选择。替换期间,您就可以开始了。

资源

替代方案:XML解析


我有时通常用于字符串解析的一个巧妙技巧是利用该FilterXML()函数(Excel 2013及更高版本)。基本策略是使用Substitute()格式化XML字符串中的元素的方式格式化字符串,然后可以使用xpath语法方便地导航已解析的元素。使用此策略,获得扩展将如下所示...

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

如果您不熟悉xml,这似乎令人生畏,但如果您掌握了发生的情况,我发现它比使用len(),alternate(),等更好的原因之一是因为只有一个单元格引用。

非法字符

有迹象表明,被允许在路径,但不是在XML两个字符:&'

如果不存在这些字符,则上述公式将起作用,否则,将需要对它们进行类似的处理...

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

假设我们有一个讨厌的文件路径,如下所示:

C:\ Folder1 \ Folder2 \(丑陋的字符!@#$%^()_ + = {} ;;`)\ two.dots.LongExt

1.)该Substitution()部分会将其转换为这样的xml字符串...

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

2.)像这样格式化后,p使用xpath语法选择最后一个元素很简单//p[last()]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.