Excel VBA公式:从文件路径提取文件扩展名?
给定包含文件路径的excel列,什么excel公式只返回文件扩展名Excel VBA公式:从文件路径提取文件扩展名?,excel,vba,Excel,Vba,给定包含文件路径的excel列,什么excel公式只返回文件扩展名 src\main\java\com\something\proj\UI.java-->java src\main\java\com\something\proj\Server.scala-->scala src\main\java\com\something\proj\include.h\sometinclude.hpp-->hpp 注1:此公式适用于只有一个句点的文件路径,但不适用于情况3:=IF(A1=“”,“”,RIGHT
src\main\java\com\something\proj\UI.java
-->java
src\main\java\com\something\proj\Server.scala
-->scala
src\main\java\com\something\proj\include.h\sometinclude.hpp
-->hpp
注1:此公式适用于只有一个句点的文件路径,但不适用于情况3:=IF(A1=“”,“”,RIGHT(A1,LEN(A1)-FIND(“.”,A1))
注2:我知道这些文件路径是特定于Windows的,我不需要跨平台解决方案
相关:和这将查找最后一个
之后的所有内容:
=MID(A1,FIND("{{{",SUBSTITUTE(A1,".","{{{",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))+1,LEN(A1))
这将在最后一个
之后找到所有内容:
=MID(A1,FIND("{{{",SUBSTITUTE(A1,".","{{{",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))+1,LEN(A1))
如果数据在A1中,请使用:
=SUBSTITUTE(RIGHT(SUBSTITUTE(A1,".",REPT(".",999)),999),".","")
发件人:
如果数据在A1中,请使用:
=SUBSTITUTE(RIGHT(SUBSTITUTE(A1,".",REPT(".",999)),999),".","")
发件人:
这里有一个很好的长答案。:-)
这里有一个很长的答案::-)
通常,我在字符串解析中使用的一个巧妙技巧是利用FilterXML()
函数(Excel 2013及更高版本)。基本策略是使用Substitute()
对字符串进行格式化,使其能够跨xml字符串中的元素进行解析,然后可以使用语法方便地导航解析后的元素。使用此策略,获得扩展将如下所示
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
2.)一旦格式化成这样,使用xpath语法//p[last()]
挑选最后一个p
元素就很简单了。通常,我在字符串解析中使用的一个巧妙技巧是利用FilterXML()
函数(Excel 2013及更高版本)。基本策略是使用Substitute()
对字符串进行格式化,使其能够跨xml字符串中的元素进行解析,然后可以使用语法方便地导航解析后的元素。使用此策略,获得扩展将如下所示
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
2.)一旦格式化成这样,使用xpath语法选择最后一个p
元素就很简单了//p[last()]
很酷,谢谢!我正在试图理解它是如何工作的-你能解释一下方法吗?@user3633993首先它计算
的数量,并用{{{
替换最后一个
。然后它发现{{{
并拆分其上的文本字符串。使用不允许的字符(如*
拆分)可能更安全。这是一个角大小写,但{{{.foo
是一个有效的文件名。很酷,谢谢!我正在试图理解它是如何工作的-你能解释一下方法吗?@user3633993首先它计算
的数量,并用{{
替换最后一个
。然后它发现{{{
并拆分其上的文本字符串。使用不允许的字符(如*
拆分)可能更安全。这是一个角大小写,但{{{.foo
是一个有效的文件名。太棒了,谢谢!试图理解这个方法-你能解释一下为什么这样做吗?@BradWehrwein它之所以有效,是因为它将最后一个句点后的任何字符与所有其他字符分隔999点,或者你选择的任何数字。然后你可以选择最右边的999个字符,知道你是sele除了扩展字符和一堆句号外,什么都不做。替换掉句号,你就可以开始了。太棒了,谢谢!试着理解这个方法-你能解释一下为什么这样做吗?@BradWehrwein它之所以有效,是因为它将上一个句号之后的任何字符与所有其他字符分隔999点,或者任何你需要的数字选择。然后,您可以选择最右边的999个字符,知道您只选择了扩展字符和一组句点。替换掉句点,您就可以开始了。