2016-07-23 68 views
0

我想使用vba代碼在('和')之間提取數據。 例如從string =" ('128003848885492'), ('128003848885502')"。我需要128003848885492128003848885502,並需要分別在其他文件中比較這些值。使用vba代碼提取('和')數據

請建議。

在此先感謝。

+2

所以拆分對'''和使用位置1和3 –

回答

1

刪除不必要的字符,留下逗號來拆分字符串。這會給你一個字符串數組。

Sub Example() 

    Dim StringValues As String 
    Dim ArrayValues() As String 
    Dim Value As Variant 

    StringValues = "('128003848885492'),('128003848885502')" 

    'Remove unnecessary characters leaving the commas to split the string 
    StringValues = Replace(StringValues, ")", "") 
    StringValues = Replace(StringValues, "(", "") 
    StringValues = Replace(StringValues, "'", "") 

    ArrayValues = Split(StringValues, ",") 

    For Each Value In ArrayValues 

     Debug.Print CDbl(Value) 

    Next 

End Sub 

enter image description here

+0

僅有'ArrayValues =分段(StringValues ,「'」)'和'For i = 1 to ubound(ArrayValues)Step 2',然後'Debug.Print cdbl(ArrayValues(i))'不需要做任何替換。 –

+0

請看這裏http://imgur.com/a/vLJIo –

+0

就我個人而言,我會創建一個聲明第二個數組爲長或雙,並將數字添加到它。替換原因是爲了簡化比較。他將使用多個陣列對多個文件進行比較。數組越簡單,比較越容易。 – 2016-07-23 20:39:19

1

的另一種方法,更一般地和分離只有數字:

Dim str, newstr As String 
Dim arr() As String 
Dim i As Integer 
str = "('128003848885492'), ('128003848885502')" 
For i = 0 To Len(str) - 1 
    If IsNumeric(Mid(str, i + 1, 1)) Or Mid(str, i + 1, 1) = "," Then 
     newstr = newstr & Mid(str, i + 1, 1) 'We extract only the numbers and the comma. 
    End If 
Next i 
arr = Split(newstr, ",") 
MsgBox (arr(0)) 'first number 
MsgBox (arr(1)) 'second number