2017-10-17 21 views
2

Hallo, ich möchte die Zahlen aus Zeichenfolge in Excel dynamisch extrahieren.So extrahieren Sie die Zeichen aus einer Zeichenfolge in Excel

Ich habe folgende Strings und möchte nur die Nummern vor ". Pdf" haben. aus der Zeichenfolge in die nächste Spalte genommen.

Wie Sie sehen können, variiert die Anzahl der Zeichen von Zeile zu Zeile.

Ich habe so etwas wie dies erfunden:

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

Aber das nimmt nur die Zahlen nach „_“ und .pdf danach ....

Wie es die Art und Weise machen Ich mag ?

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 

So dass ich gerade:

4462  
39522  
39511  
39555  
6118  
and so on... 

Thank you !!!

Antwort

0

Mit dieser Formel, sollten Sie in der Lage sein, die Zahlen, die Sie erhalten möchten:

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

Im Grunde ist dies die anfängliche fomula:

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

Aber da kann be zwei _ in der Zeichenfolge, so ist dies die eine, um die 2. _ zu finden:

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

Jetzt ersetzen Sie einfach diese SUBSTITUTE mit A1 oben und Sie erhalten diese lange Formel. Hoffe das hilft.

2

Mit VBA, versuchen Sie es wie dies zu tun:

Public Function splitThings(strInput As String) As String 

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

End Function 

Ihre Formel betrifft, versuchen =LEFT(MID(M20;SEARCH("_";M20);20),K) zu verwenden, wobei K die Differenz der Länge von ts22b_6118.pdf und 4 (.pdf). 4 ist die Länge von .pdf. So etwas sollte die Arbeit machen:

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

Sie tun sollten, es Excel-Formel. Zum Beispiel:

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

die erste Zeile als Beispiel, mit LEFT(A1,FIND(".pdf",A1)-1) haben Sie D: \ Benutzer \ xxxx \ Desktop \ 1610 \ ts25b_4462 und mit den LEFT(A1,FIND("_",A1)) D: \ Benutzer \ xxxx \ Desktop \ 1610 \ ts25b_, wenn Sie den ersten Teil durch "" ERSETZEN haben Sie 4462.

Hoffe, das kann helfen.

0

Dies wird die Nummer, die Sie wollen, unabhängig von der Erweiterung (könnte .pdf, könnte sein.xlsx, usw.) und unabhängig von der Anzahl der Unterstriche im Dateinamen und/oder Dateipfad:

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