-1

如何获取excel中两个星号之间的值?

例如:

我有这些:TXI*GS*346.32*13*SP*ON*3***103634408RT0001

我只想得到值 346.32

我为 A1:A20 提供了这样的数据,我如何使用 VBA 替换它们?

4

2 回答 2

2
Sub useSplit()
    Dim s As String
    s = "TXI*GS*346.32*13*SP*ON*3***103634408RT0001"
    Dim a() As String
    a = Split(s, "*")

    Dim i As Long
    For i = 0 To UBound(a)
        Debug.Print a(i)
    Next
End Sub
于 2013-07-11T14:07:59.710 回答
0
Sub extractFirstNumber()

    Set objRegEx = CreateObject("vbscript.regexp")
    ' Match numbers of the form 123 or 123.45
    objRegEx.Pattern = "\d+(\.\d*)?"

    ' Iterate over the first 20 rows in first column
    For i = 1 To 20
        Set objMatch = objRegEx.Execute(Cells(i, 1).Value)
        If objMatch.Count = 1 Then
            ' If there is a match, replace the cell value
            Cells(i, 1).Value = objMatch(0)
        End If
    Next i

End Sub

编辑

Sub extractFirstAndThirdNumber()

    Set objRegEx = CreateObject("vbscript.regexp")
    ' Match numbers of the form 123 or 123.45 between asteriks
    objRegEx.Pattern = "\*(\d+(\.\d*)?)"
    objRegEx.Global = True

    ' Iterate over the first 20 rows in first column
    For i = 1 To 20
        Set objMatch = objRegEx.Execute(Cells(i, 1).Value)
        If objMatch.Count >= 2 Then
            ' If there is a match, replace the cell value
            'Cells(i, 1).Value = objMatch(0)
            Cells(i, 3).Value = objMatch(0).SubMatches(0)
            Cells(i, 4).Value = objMatch(2).SubMatches(0)
        End If
    Next i

End Sub
于 2013-07-12T10:26:47.097 回答