Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA公式:从文件路径提取文件扩展名?_Excel_Vba - Fatal编程技术网

Excel VBA公式:从文件路径提取文件扩展名?

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

给定包含文件路径的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(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个字符,知道您只选择了扩展字符和一组句点。替换掉句点,您就可以开始了。