我有一个像这样的字符串的excel列:ABC-1234-GLK-1234-10TH8E10-21 71-D 我需要给变量赋值GL-1234(子字符串在第二短跑和第四次之间)。我试图VBA某些字符串的部分
x=Mid(string, 10, 8)
但问题是,并非所有的字符串的长度相同,但唯一不变的是,我想要的是子第2和第4个破折号之间。
任何想法?
我有一个像这样的字符串的excel列:ABC-1234-GLK-1234-10TH8E10-21 71-D 我需要给变量赋值GL-1234(子字符串在第二短跑和第四次之间)。我试图VBA某些字符串的部分
x=Mid(string, 10, 8)
但问题是,并非所有的字符串的长度相同,但唯一不变的是,我想要的是子第2和第4个破折号之间。
任何想法?
你可以尝试以下方法,但我不认为这是最优雅的或最简单的解决方案:
x = ""
p1 = InStr(1, string, "-")
If p1 <> 0 Then
p2 = InStr(1 + p1, string, "-")
If p2 <> 0 Then
p3 = InStr(1 + p2, string, "-")
If p3 <> 0 Then
p4 = InStr(1 + p3, string, "-")
If p4 <> 0 Then
x = Mid(string, p2 + 1, p4 - p2 - 1)
End If
End If
End If
End If
这将返回第二个破折号和第4破折号,B1是字符串:ABC-1234- GLK-1234
=MID(B1,FIND("-",B1,FIND("-",B1)+1),FIND("-",B1,FIND("-",B1,FIND("-",B1,FIND("-",B1)+1)+1)+1) - FIND("-",B1,FIND("-",B1)+1))
您可以用'InStr'找到短线的位置。 – Jacob
谢谢!!!!这正是我需要的! :) p.s. VBA中的新功能 – Maggie11
[如何获取某个字符串的特定部分]的可能重复(http://stackoverflow.com/questions/2543225/how-to-get-a-particular-part-of-a-string) – puzzlepiece87