在列
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))
这有效。
=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
来计算字符的第二层。这使得它更更具可读性。
对于 2024 年遇到此问题的人,Excel 2019/365 及更高版本中提供了一种更简单的方法:
=TEXTBEFORE(A1,"\",-1)
我没有足够的声誉来评论bendataclear针对Excel 2019/365的解决方案,但是如果您在单元格A1中没有文件路径,则可以使用以下公式:
=TEXTBEFORE(CELL("filename"),"\",-1)