使用vba代码提取('和')数据

问题描述:

我想使用vba代码在('和')之间提取数据。 例如从string =" ('128003848885492'), ('128003848885502')"。我需要128003848885492128003848885502,并需要分别在其他文件中比较这些值。使用vba代码提取('和')数据

请建议。

在此先感谢。

+2

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

删除不必要的字符,留下逗号来拆分字符串。这会给你一个字符串数组。

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

的另一种方法,更一般地和分离只有数字:

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