Excel 公式,从字符串中删除最后一个 \ 和子路径

Excel 公式,从字符串中删除最后一个 \ 和子路径

我有一个路径名,它使用反斜杠作为分隔符,并在单元格中以反斜杠结尾B5,例如 \\stack\over\flow\。我想将其缩短为\\stack\over\。我需要一个公式来\从我的完整路径中删除最后一个子路径组件。

答案1

在 C5 中输入公式:

=REPLACE(B5,FIND("@",SUBSTITUTE(B5,"\","@",LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))-1))+1,99,"")

答案2

构建于bosco_yip 的回答,简化并解释一下:

=LEFT(B5,FIND("|",SUBSTITUTE(B5,"\","|",LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))-1)))
  • SUBSTITUTE(B5,"\","")删除 中的所有反斜杠B5 (通过将其替换为空字符串)。因此,例如,如果B5\\stack\over\flow\,则这将是stackoverflow
  • LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))是计算 中反斜杠数量的常用技巧 B5。我们从中减去 1 以获得倒数第二个反斜杠的数量。
  • SUBSTITUTE(B5,"\","|", <the above> ) 将倒数第二个反斜杠替换为 |(竖线)。
  • FIND("|", <the above> ) 发现位置|,它(大概/希望)是倒数第二个反斜杠。如果B5已经包含任何竖线,这里自然会出现问题,但请注意,|Windows 路径名不允许使用 。(相比之下,@ 有效的 Windows 文件名字符。
  • LEFT(B5, <the above> )B5 获取直到倒数第二个反斜杠(包括该值)的值。

注意,如果 B5仅包含一个 \ (例如 , \foo\bar)  \Program Files,则上述操作将出错。如果 B5是 \\或 \\stack,则结果将为 \。  bosco_yip 的回答行为相同。

相关内容