使用单元格公式从文件路径获取父文件夹路径

问题描述 投票:0回答:3

在列

A
我有20000行,文件名和文件路径

“C:\person\microsoft\ygkyg\mmddyy ilename.xls”
“\server-41\performance\mmddyy ilename.doc”
......
等等

B
列中我只想获取父文件夹路径。

有人可以帮我计算公式吗?我尝试了这个,但它给了我文件名。

=MID(a1,FIND(CHAR(1),
    SUBSTITUTE(a1,"\",CHAR(1),LEN(a1)-LEN(SUBSTITUTE(a1,"\",""))))+1,LEN(a1))
excel worksheet-function
3个回答
31
投票

这有效。

=MID(A1,1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))))

以上是我原来的回答。 Neil稍微简化了表达方式并将其作为评论发布在下面:

=LEFT(A1,FIND("?",SUBSTITUTE(A1,"\","?",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))

这利用了

?
是路径中的禁用字符这一事实,因此可以安全地使用
"?"
代替
CHAR(1)
作为地标,从而稍微提高了可读性。此外,
LEFT(A1,x)
相当于,并且比
MID(A1,1,x)
短,因此使用
LEFT
是有意义的。但最重要的是,这个公式使用了
FIND
,而不是使用
LEN
来计算字符的第二层。这使得它更具可读性。


1
投票

对于 2024 年遇到此问题的人,Excel 2019/365 及更高版本中提供了一种更简单的方法:

=TEXTBEFORE(A1,"\",-1)

0
投票

我没有足够的声誉来评论bendataclear针对Excel 2019/365的解决方案,但是如果您在单元格A1中没有文件路径,则可以使用以下公式:

=TEXTBEFORE(CELL("filename"),"\",-1)
© www.soinside.com 2019 - 2024. All rights reserved.