Barry有一个工作表,其中一列包含许多文件路径。他想要一种从每个路径中仅提取文件名(最后反斜杠右侧的部分)的方法。他想知道是否有一种无需使用“文本到列”功能即可快速完成此操作的方法。

有几种不同的方法,具体取决于您是否要使用宏。

如果文件名长度相同,则只需使用RIGHT函数即可提取最后一个字符。 (此公式假定完整路径,文件名位于单元格A1中。)

=RIGHT(A1,11)

假定文件名始终为11个字符长,例如“ text001.txt”。如果每个实例中的文件名长度不同,则此方法将不起作用。相反,您可以尝试使用以下公式:

=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1), LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))

请注意该公式两次使用SUBSTITUTE函数。在每种情况下,它都会用其他方式替换反斜杠(\)。第一次用ASCII值1替换所有这些字符,第二次用空值(空字符串)替换所有字符,以便可以确定原始路径中有多少个反斜杠。 MID函数用于定位(在FIND和SUBSTITUTE函数的帮助下)路径中最后一个反斜杠的位置,并返回该点之后的所有内容。

如果您确定文件名的长度永远不会超过99个字符,则可以使用较短的公式:

=TRIM(RIGHT(SUBSTITUTE(A2,"\",REPT(" ",100)),99))

此公式将所有反斜杠替换为100个空格,从结果字符串中获取最右边的99个字符(该文件名将在其前面带有一串空格),然后修剪所有空格。

如果要使用宏,则可以创建一个非常短的函数,该函数将基于定界符将字符串(在这种情况下为完整路径)分开:

Function GetFileName(File_Path) As String     Dim Parts

Parts = Split(File_Path, Application.PathSeparator)

GetFileName = Parts(UBound(Parts))

End Function

告诉你它很短!完成繁重工作的函数是Split函数,该函数根据您指定的分隔符将字符串拉开,然后将零件填充到数组中。在此示例中,Split函数将分隔符用于运行Excel的系统的任何分隔符。

结果数组的最后一个元素(由UBound函数确定)包含原始路径中位于最后一个路径分隔符右侧的部分,即文件名。

您可以开发一个更短的函数来完成这项工作:

Function GetFileName(File_Path) As String     GetFileName=Mid(File_Path,InStrRev(File_Path,"\")+1 End Function

要使用任何一个函数,请将这样的公式放在单元格中:

=GetFileName(A1)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12903)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: