【问题标题】:Get parent folder path from file path using cell formula使用单元格公式从文件路径获取父文件夹路径
【发布时间】:2011-07-27 03:54:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您会接受 VBA 解决方案吗?
  • @David,其实我只是在找简单的excel公式。
  • @david 我认为 VBA 解决方案将是唯一合理的解决方案,对吧?从 1 到最后一次出现“\”的 Mid() 应该可以工作,但不知道如何使用公式!
  • @Hannah 我想我不能帮助你。祝你好运!
  • @hannah 你可以使用 VBA 函数作为 UDF 公式。

标签: excel worksheet-function


【解决方案1】:

这行得通。

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

以上是我的原始答案。 Neil 稍微简化了表达式并将其发布为comment 下面:

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

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

【讨论】:

  • 错过了几秒钟,好一个让! FY,关于反向字符串查找的原始讨论在这里:stackoverflow.com/questions/350264/…
  • 一个更快速的事情。它给了我 C:\person\microsoft\ygkyg\mmddyy\ 但我不需要最后一个“\”
  • 稍微简化:=LEFT(A1,FIND("?",SUBSTITUTE(A1,"\","?",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))(注意这包括尾部反斜杠)
  • =MID(A1,1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)) -LEN(SUBSTITUTE(A1,"\","")))),LEN(A1)))) 我取出 +1 并从路径中取出最后一个“/”。谢谢
  • 要使用较短的解决方案=LEFT(A1,FIND("?",SUBSTITUTE(A1,"\","?",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))) 获取祖父路径,我们需要了解它。它转换为“计算路径中反斜杠的数量(路径的 LEN - 没有反斜杠的路径的 LEN),并将最后一个替换为 '?'。然后将所有字符放在该 '?' 的左侧。”因此,要获得祖父路径,您可以替换下一个较早的反斜杠,即将LEN(A1)-LEN(SUBSTITUTE(A1,"\","")) 更改为LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))-1
猜你喜欢
  • 2011-07-31
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多