excel 中的文件路径列表。想要从路径中提取文件名,因此文件路径中最后一个“\”后面的所有内容

excel 中的文件路径列表。想要从路径中提取文件名,因此文件路径中最后一个“\”后面的所有内容

我一直在尝试将 Excel 的 =RIGHT 函数与 FIND 结合使用。我想我的想法是:

例子:

我在单元格 A1 中有“H:\NIck\Pictures\Fam\download.jpg”

然后我想编写一个公式,将结尾的“download.jpg”放入 A2 中。

我目前的想法是:

  1. 从单元格文本的末尾开始查找。
  2. 当 Excel 遇到第一个“\”实例时,将直到该点的所有内容提取到单元格 A2 中。

我这样做对吗?

答案1

查看这一页它对 URL 进行了处理。
它给出了很好的分解并解释了公式的不同部分。
只需将您需要查找的字符更改为反斜杠,它就可以用于文件名。

=RIGHT(A1,LEN(A1)-FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))),1))

答案2

只要您使用的不是旧版 Office,InstrRev 就能让您更轻松地找到文件名中的最后一个 \。它从右到左解析字符串,而不是从左到右(Instr 就是这么做的)。

尝试这个:

Sub TestExtract()
    Debug.Print ExtractFilename("H:\Nick\Pictures\Fam\download.jpg")
    Debug.Print ExtractFilename("H:\Fam\download.jpg")
    Debug.Print ExtractFilename("H:\download.jpg")
    Debug.Print ExtractFilename("H:download.jpg")

End Sub

Function ExtractFilename(sFullPath As String) As String

    Dim x As Long

    If InStr(sFullPath, "\") > 0 Then
        x = InStrRev(sFullPath, "\")
        ExtractFilename = Mid$(sFullPath, x + 1)
    Else
        ' Might be a fullpath like C:somefile.xxx
        If InStr(sFullPath, ":") > 0 Then
            x = InStr(sFullPath, ":")
            ExtractFilename = Mid$(sFullPath, x + 1)
        End If
        ' Other oddities?  Handle 'em here
    End If

End Function

相关内容