3

パスを持つデータで満たされた列があります。パスの最後の要素、最後から 2 番目の要素、および最初の要素を取得したいと思います。たとえば、次のデータの場合:

\Product\Release\Iteration
\Product\Folder1\Folder2\Anotherfolder\Release2\Iteration5
\Product
\Product\Somefolder\Release3\Iteration5

セルで次を取得したい

セル B1: "製品"、セル C1: "リリース"、セル D1: "反復"

セル B2: "Product"、セル C2: "Release2"、セル D2: "Iteration5"

セル B3: 「製品」、セル C3: 空白、セル D3: 空白

セル B4: "Product"、セル C4: "Release3"、セル D4: "Iteration5"

最初と最後のコンポーネントを取得するのは簡単です。ほとんどの場合、最後から 2 番目のコンポーネント (上記の例の列 C) を取得するのに苦労しています。

4

7 に答える 7

3

B1 で下にコピー:

=TRIM(MID(SUBSTITUTE(A1,"\",REPT(" ",99)),99,99))

C1でコピーダウン:

=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))=2,TRIM(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",99)),99)),IF(LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))>2,TRIM(LEFT(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",99)),198),99)),""))

D1 で以下をコピー:

=IF(OR(LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))={1,2}),"",TRIM(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",99)),99)))
于 2013-08-20T21:12:03.427 に答える
1

必要なパスの任意の部分を取得するための 2 つの式を作成しました。

左から最初のものを取る:

=IFERROR(MID(A3,FIND(CHAR(1)),SUBSTITUTE(A3,"\",CHAR(1),C$2))+1,IFERROR(FIND("\",A3,FIND(CHAR(1)) ,SUBSTITUTE(A3,"\",CHAR(1),C$2))+1)-FIND(CHAR(1),SUBSTITUTE(A3,"\",CHAR(1),C$2))-1,LEN (A3))),"")

右から最初のものを取る:

=IFERROR(MID(A3,FIND(CHAR(1)),SUBSTITUTE(A3,"\",CHAR(1),LEN(A3)-LEN(SUBSTITUTE(A3,"\",""))+1-D $2))+1,IFERROR(FIND("\",A3,FIND(CHAR(1)),SUBSTITUTE(A3,"\",CHAR(1),LEN(A3)-LEN(SUBSTITUTE(A3,"\") ,""))+1-D$2))+1)-FIND(CHAR(1),SUBSTITUTE(A3,"\",CHAR(1),LEN(A3)-LEN(SUBSTITUTE(A3,"\") ,""))+1-D$2))-1,LEN(A3))),"")

そして、これがどのように機能しているかを確認できるGoogle スプレッドシートです。

注: Google スプレッドシートと互換性を持たせるには、式にいくつかの変更を加える必要がありました。

  • CHAR(1)別のものに変えて"/"代用しました
  • これにより、MS Excel ではエラーが発生しますが、Google スプレッドシートでは発生しないため、 (パラメータ)IF()を確認する を追加します。SUBSTITUTE(,,,0)0
于 2013-08-21T16:38:31.063 に答える
0

これはうまくいくはずです(ファイル名に*を使用しないと仮定しますが、とにかくWindowsでは許可されていないと思います):

=RIGHT(A2,LEN(A2)-FIND("*",SUBSTITUTE(A2,"\","*",(LEN(A2)-LEN(SUBSTITUTE(A2,"\","")))-1),1))

これは、最後から 2 番目の要素です。

太字の数字を変更することで、必要な要素を取得できます。

=RIGHT(A2,LEN(A2)-FIND(" ",SUBSTITUTE(A2,"\"," ",(LEN(A2)-LEN(SUBSTITUTE(A2,"\","")))- 3 ) ,1))

編集・追加

上記の式の n 番目の要素の右側にある値を削除したい場合は、次のように実行できます。

=IFERROR(LEFT(RIGHT(A2,LEN(A2)-FIND("*",SUBSTITUTE(A2,"\","*",(LEN(A2)-LEN(SUBSTITUTE(A2,"\","")))-1),1)),FIND("\",RIGHT(A2,LEN(A2)-FIND("*",SUBSTITUTE(A2,"\","*",(LEN(A2)-LEN(SUBSTITUTE(A2,"\","")))-1),1)),1)-1),"error checking, lol")
于 2013-08-20T21:18:34.893 に答える