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 を引くと、最後から 2 番目のバックスラッシュの数が得られます。
  • SUBSTITUTE(B5,"\","|", <the above> ) 最後から 2 番目のバックスラッシュを |(縦棒) に置き換えます。
  • FIND("|", <the above> ) 見つける位置|最後から2番目のバックスラッシュです。当然、B5に縦棒が含まれている場合はここで問題が発生しますが、 は|Windowsのパス名では許可されていないことに注意してください。(対照的に、@ 有効な Windows ファイル名文字。
  • LEFT(B5, <the above> )B5 最後から 2 番目のバックスラッシュまでの値を取得します。

B5に 1 つしか含まれていない 場合 \ (例:  \foo\barまたは \Program Files)、上記はエラーになることに注意してください。 が または の場合 B5、 \\結果 \\stackは になります \。  bosco_yip の回答同じように動作します。

関連情報