在Excel中,将URL的结尾移动到另一个单元格
我有一列几千个网址。我想复制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 谢谢
/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是不同的。最后一个“/”后面的所有文本都是正确的。