2017-10-17 55 views
2

こんにちはExcelの文字列から数字を動的に抽出したいと思います。Excelの文字列から文字を抽出する方法

私は以下の文字列を持っています。私は ".pdf"の前に数字だけを持っています。文字列から次の列に取り出されます。

ご覧のとおり、文字数は行ごとに異なります。

私はこのような何か発明した:

=MID(M20;SEARCH("_";M20);20) 

をしかし、これは、この後にのみ「_」の後の数字と.PDFを取り出し....

それ私が好きなようにする方法?

D:\Users\xxxx\Desktop\1610\ts25b_4462.pdf  
D:\Users\xxx\Desktop\1610\ts02b_39522.pdf 
D:\Users\xxxxx\Desktop\1610\ts02b_except_39511.pdf 
D:\Users\xxxx\Desktop\1610\ts02b_except_39555.pdf  
D:\Users\xxxx\Desktop\1610\ts22b_6118.pdf 

私はちょうど持つように:

4462  
39522  
39511  
39555  
6118  
and so on... 

ありがとうございました!!! VBAで

答えて

0

、あなたが欲しいの数字を得ることができる必要があります:

=MID(A1,FIND("|",SUBSTITUTE(A1,"_","|",LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))))+1,FIND(".",A1)-FIND("|",SUBSTITUTE(A1,"_","|",LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))))-1) 

は基本的に、これは最初のフォーミュラです:

=MID(A1,FIND("_",A1)+1,FIND(".",A1)-FIND("_",A1)-1) 

しかし、そこにもあるので文字列に_が2つありますので、これは2番目を見つけるためのものです_

=SUBSTITUTE(A1,"_","|",LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))) 

このSUBSTITUTEを上記のA1と置き換えると、その長い式が得られます。お役に立てれば。

2

、このようにそれをやろう:

Public Function splitThings(strInput As String) As String 

    splitThings = Split(Split(strInput, "_")(1), ".")(0) 

End Function 

あなたの式については、Kはts22b_6118.pdfと4 (.pdf)の長さの違いである=LEFT(MID(M20;SEARCH("_";M20);20),K)を、使用してみてください。 4は、の長さです。

=LEFT(MID(I3,SEARCH("_",I3)+1,LEN(I3)),LEN(MID(I3,SEARCH("_",I3),LEN(I3)))-5) 
1

あなたはExcelの数式を使用してそれを実行する必要があります。このような 何かの作業を行う必要があります。たとえば:\ Users \ユーザーXXXX \デスクトップ\ 1610 ts25b_4462 \とLEFT(A1,FIND("_",A1)) Dと::

=SUBSTITUTE(LEFT(A1,FIND(".pdf",A1)-1),LEFT(A1,FIND("_",A1)),"") 

あなたはDになりますLEFT(A1,FIND(".pdf",A1)-1)で、一例として、最初の行を使用して\ Users \ユーザーXXXX \デスクトップ\ 1610 \ ts25b_、あなたが最初の部分を ""で置き換えると、あなたは4462になります。

これは役に立ちます。

この式では
0

これは、拡張子にかかわらず必要な番号を返します(.pdfの可能性もあります)。xlsxなど)、ファイル名および/またはファイルパスに存在するアンダースコアの数に関係なく、次のようになります。

=TRIM(LEFT(RIGHT(SUBSTITUTE(SUBSTITUTE(M20,".",REPT(" ",LEN(M20))),"_",REPT(" ",LEN(M20))),LEN(M20)*2),LEN(M20)))