2

我有一列包含一长串文件夹和文件名。文件夹和文件名各不相同。我想将列中的文件名提取到另一列中,但我很难在 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))应该可以工作,但它显示的结果不正确。但是,如果我将其更改为搜索“。” 它拉出文件扩展名。所以我缺少一个关键项目

4

4 回答 4

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

将它复制到任何列中说b向下拖动,你就完成了

于 2013-01-03T10:15:06.797 回答
1

如果您有很多文件要解析,VBA 是一个更有效的选择。创建一个模块并添加以下内容:

Function GetFileName(file As String) As String

    Set fso = CreateObject("Scripting.FileSystemObject")

    GetFileName = fso.GetFileName(file)

End Function
于 2013-01-03T10:20:57.763 回答
0

有几种不同的方法可以获取字符串中最后一个斜杠之后的文本,包括以下公式。在此示例中,H15 是包含要搜索的字符串的单元格。如果找不到斜线,则返回“-”(破折号)字符。

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

该公式首先查找字符串中的斜线数。LEN 给出字符串的总长度,使用 SUBSTITUTE 消除原始字符串中的斜线后不带斜线的字符串的 LEN - 区别在于斜线的数量。

然后,用标记字符(我使用“|”)替换最后一个斜杠。通过搜索标记,您可以找到斜线后的位开始的位置。字符串的总长度减去标记开始的位置会告诉您从右侧取多少个字符,然后您就可以这样做。

于 2013-01-03T10:42:22.353 回答
0

如果您需要更通用的字符串解析并愿意使用一点 VBA,您可以使用Jamie Bull 在他对 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
于 2014-02-18T18:26:59.020 回答