VBA字符串的某些部分

时间:2012-12-05 08:48:22

标签: string excel vba

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

x=Mid(string, 10, 8)

但问题是并非所有字符串都具有相同的长度,但唯一的常量是我想要的子字符串位于第2和第4个字符串之间。

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

拆分字符串并提取您想要的内容:

Dim dataSplit() As String
Dim dataString As String

dataSplit = Split(Sheet1.Range("C14").Value2, "-")

dataString = dataSplit(2) & "-" & dataSplit(3)

答案 1 :(得分:1)

您可以尝试以下方法,但我认为这不是最优雅或最简单的解决方案:

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

答案 2 :(得分:0)

这将返回第二个破折号和第四个破折号,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))