如何从Excel中的字符串中提取字符

如何从Excel中的字符串中提取字符

问题描述:

嗨我想从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... 

谢谢!

有了这个公式,你应该能够得到你想要的数字:

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

基本上,这是最初的fomula:

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

但由于可能存在在字符串中为两个_,所以这是找到第二个的_

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

现在,只需将上面的SUBSTITUTE替换为A1即可获得该公式。希望这可以帮助。

用VBA,尝试做这样的:

Public Function splitThings(strInput As String) As String 

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

End Function 

关于您的公式,请尽量使用=LEFT(MID(M20;SEARCH("_";M20);20),K),其中K是ts22b_6118.pdf和4 (.pdf)长度的差异。 4是.pdf的长度。 这样的事情应该做的工作:

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

你应该使用Excel公式做到这一点。例如:

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

使用第一线为例,与LEFT(A1,FIND(".pdf",A1)-1)你将有d:\用户\ XXXX \桌面\ 1610 \ ts25b_4462并与LEFT(A1,FIND("_",A1)) d:\用户\ XXXX \桌面\ 1610 \ ts25b_,如果你用“”替代第一部分,你将有4462.

希望这可以提供帮助。

这将返回你想要的数字,而不管扩展名(可能是.pdf,可能是。xlsx等),而不管文件名和/或文件路径中存在下划线的数量:

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