按第一个分隔符分割string

我有一长列文件夹和文件名。 文件夹和文件名称有所不同。 我想从列中提取文件名到另一列,但我努力在Excel中做到这一点。

列数据示例:(更改文件和文件夹以隐藏不应公开的详细信息)

c:\data\1\nc2\media\ss\system media\ne\d - wnd enging works v5.swf c:\data\1\nc2\media\ss\special campaigns\samns dec 2012\trainerv5.swf C:\Local\Messages\17362~000000001~20131231235910~4.MUF c:\data\1\nc2\media\ss\system media\tl\nd - tfl statusv4.swf c:\data\1\nc2\media\ss\system media\core\ss_bagage v2.swf 

我知道我应该能够从右边search到“\”的第一次出现,但我无法弄清楚语法。

非常感谢

更新:

公式=RIGHT(B2,LEN(B2)-SEARCH("\",B2,1))应该工作,但是它显示不正确的结果。 但如果我改变它来search“。” 它拉出文件扩展名。 所以有一个我失踪的重要项目

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

把它复制到任何一列里,然后拖下来,就完成了

如果有许多文件需要parsing,VBA是一个更高效的选项。 创build一个模块并添加下面的内容:

 Function GetFileName(file As String) As String Set fso = CreateObject("Scripting.FileSystemObject") GetFileName = fso.GetFileName(file) End Function 

有几种不同的方式来获取string中最后一个斜杠后面的文本,包括下面的公式。 在这个例子中,H15是包含要search的string的单元格。 如果找不到斜杠,则返回“ – ”(破折号)字符。

  =iferror(RIGHT(H15,LEN(H15)-SEARCH("|",SUBSTITUTE(H15,"/","|",LEN(H15)-LEN(SUBSTITUTE(H15,"/",""))))),"-") 

公式首先在string中find斜线的数量。 LEN给出string的总长度,并且在使用SUBSTITUTE消除原始string中的斜杠之后,string的LEN不带斜杠 – 区别在于斜杠的数量。

然后,用一个标记字符(我用“|”)代替最后的斜线。 通过search标记,您可以find斜线后的位。 string的总长度减去标记开始处的位置,告诉你从右侧开始需要input多less个字符,然后执行。

如果您需要更多的通用stringparsing并且愿意使用一点VBA,那么可以使用Jamie Bull在SuperUser上回答这个问题时所使用的split函数。

他的function将使用您select的任何字符将string拆分为段并返回您select的段。

我在这里复制了Jamie的函数以方便参考:

 Function STR_SPLIT(str, sep, n) As String Dim V() As String V = Split(str, sep) STR_SPLIT = V(n - 1) End Function