如何从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)))