在Excel中,将URL的结尾移动到另一个单元格

在Excel中,将URL的结尾移动到另一个单元格,excel,excel-formula,Excel,Excel Formula,我有一列几千个网址。我想复制URL的结尾并将其移动到空列中。例如: 我有这个: /downloads/employeeresources/ucm649871.pdf 但我想要这个: /downloads/employeeresources/ucm649871.pdf ucm649871.pdf 是否有一个功能,我可以运行来实现这一点 如果我能去掉后缀就更好了: /downloads/employeeresources/ucm649871.pdf ucm649871 谢谢

我有一列几千个网址。我想复制URL的结尾并将其移动到空列中。例如:

我有这个:

/downloads/employeeresources/ucm649871.pdf
但我想要这个:

/downloads/employeeresources/ucm649871.pdf      ucm649871.pdf
是否有一个功能,我可以运行来实现这一点

如果我能去掉后缀就更好了:

/downloads/employeeresources/ucm649871.pdf      ucm649871

谢谢

如果您的数据与您的样本一样是静态的,那么这是非常直接的,那么我们可以假设文件名始终位于文件夹
employeeresources/
中,并且您的文件扩展名始终是
.pdf

=SUBSTITUTE(MID(D156,SEARCH("employeeresources/",D156)+18,LEN(D156)),".pdf","")

如果没有,您可以使用下面的方法提取包含扩展名的最后一个
/
之后的所有文本

=MID(SUBSTITUTE(D148,"/","@@@",LEN(D148)-LEN(SUBSTITUTE(D148,"/",""))),SEARCH("@@@",SUBSTITUTE(D148,"/","@@@",LEN(D148)-LEN(SUBSTITUTE(D148,"/",""))))+3,LEN(D148))
Public Function GET_FILENAME(Target As Range) As String

Dim Temp, i As Long

Temp = Split(Target, "/")
i = UBound(Temp)

GET_FILENAME = Left(Temp(i), Len(Temp(i)) - 4)

End Function

VBA解决方案 如果您愿意使用VBA,只需调用公式
GET\u FILENAME(range)
,即可使用下面的UDF提取文件名。请注意,此解决方案是3个解决方案中最具动态性的。它将提取最后一个
/
之后的所有文本,同时排除最后4个字符(文件扩展名)


另一个VBA解决方案是:

Function ExtractResource(strUrl As String)
Dim strResult As String

'extract the resource file:  ucm649871.pdf
strResult = Right(strUrl, Len(strUrl) - InStrRev(strUrl, "/"))

'remove the file extension:   ucm649871
strResult = Left(strResult, InStrRev(strResult, ".") - 1)

ExtractResource = strResult
End Function
您可以在目标单元格中键入=ExtractResource(“包含URL的单元格”)。

或者您可以使用(包括后缀):

=FILTERXML(“&SUBSTITUTE(A1,“/”,”)&“//s[last()]”)
不包括后缀:

=FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s[last()]")
=SUBSTITUTE(FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s[last()]"),".pdf","")
=SUBSTITUTE(FILTERXML(“&SUBSTITUTE(A1,“/”,”)&“//s[last()]”,.pdf“,”)
或者在扩展上更灵活一点:

=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,".","/"),"/","</s><s>")&"</s></t>","//s[last()-1]")
=FILTERXML(“&SUBSTITUTE(替换(A1、“.”、“/”、“/”、“/”)&“//s[last()-1]”)

您想要的字符串后面总是跟有
employeeresources/
?或者最好假设您想要
/
最后一个实例之后的所有文本?不,URL是不同的。最后一个“/”后面的所有文本都是正确的。