我的列中包含很长的文件夹和文件名列表。文件夹和文件名各不相同。我想将列中的文件名提取到另一列,但我很难在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
我知道我应该能够从右边搜索“\”的第一个出现,但我无法弄清楚语法。
非常感谢
更新:
公式=RIGHT(B2,LEN(B2)-SEARCH("\",B2,1))
应该有效,但结果不正确。但如果我改变它来搜索“。”它拉出文件扩展名。所以我有一个关键项目
答案 0 :(得分:2)
=RIGHT(A1,LEN(A1)-FIND("~",SUBSTITUTE(A1,"\","~",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))
将其复制到任意栏中,然后按b向下拖动,完成
答案 1 :(得分:1)
如果要解析许多文件,VBA是一种更有效的选项。创建一个模块并添加以下内容:
Function GetFileName(file As String) As String
Set fso = CreateObject("Scripting.FileSystemObject")
GetFileName = fso.GetFileName(file)
End Function
答案 2 :(得分:0)
有几种不同的方法可以在字符串中的最后一个斜杠后面获取文本,包括以下公式。在此示例中,H15是包含要搜索的字符串的单元格。如果找不到斜杠,则返回“ - ”(短划线)字符。
=iferror(RIGHT(H15,LEN(H15)-SEARCH("|",SUBSTITUTE(H15,"/","|",LEN(H15)-LEN(SUBSTITUTE(H15,"/",""))))),"-")
公式首先查找字符串中的斜杠数。 LEN给出了字符串的总长度,使用SUBSTITUTE消除原始字符串中的斜杠后,字符串的LEN没有斜线 - 差异是斜杠的数量。
然后,用标记字符(我用“|”)代替最后一个斜杠。通过搜索标记,您可以找到斜杠开始后的位置。字符串的总长度减去标记开始的位置,告诉您从右侧获取多少个字符,然后再进行操作。
答案 3 :(得分:0)
如果您需要更多通用字符串解析并且愿意使用一点VBA,则可以使用Jamie Bull in his answer to this question on SuperUser.建议的split
函数
他的函数将使用您选择的任何字符将字符串拆分成段并返回您选择的任何段。
我在这里复制了Jamie的功能,以方便参考:
Function STR_SPLIT(str, sep, n) As String
Dim V() As String
V = Split(str, sep)
STR_SPLIT = V(n - 1)
End Function