VBA某些string的一部分

我有一个像这样的stringexcel列:ABC-1234-GLK-1234-10TH8E10-21 71-D我需要给一个variables值GL-1234(第二个破折号和第四个之间的子string)。 我试过了

x=Mid(string, 10, 8)

但问题是,并不是所有的string都有相同的长度,但唯一的常数是我想要的子string在第2和第4短划线之间。

有任何想法吗?

你可以尝试以下,但我不认为这是最优雅或最简单的解决scheme:

 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 

拆分string,并提取你想要的:

 Dim dataSplit() As String Dim dataString As String dataSplit = Split(Sheet1.Range("C14").Value2, "-") dataString = dataSplit(2) & "-" & dataSplit(3) 

这将返回第2短划线和第4短划线,B1是string: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))