我一直在尝试将 Excel 的 =RIGHT 函数与 FIND 结合使用。我想我的想法是:
例子:
我在单元格 A1 中有“H:\NIck\Pictures\Fam\download.jpg”
然后我想编写一个公式,将结尾的“download.jpg”放入 A2 中。
我目前的想法是:
- 从单元格文本的末尾开始查找。
- 当 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