Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用vba代码在(';和';之间提取数据_Excel_Vba - Fatal编程技术网

Excel 使用vba代码在(';和';之间提取数据

Excel 使用vba代码在(';和';之间提取数据,excel,vba,Excel,Vba,我想使用vbacode在('and')之间提取数据。 e、 g fromstring=“('128003848885492'),('128003848885502')”。我需要128003848885492和128003848885502并需要分别比较其他文件中的这些值 请建议 提前感谢。删除不必要的字符,留下逗号以拆分字符串。这将为您留下一个数字字符串数组 Sub Example() Dim StringValues As String Dim ArrayValues()

我想使用
vba
code在('and')之间提取数据。 e、 g from
string=“('128003848885492'),('128003848885502')”
。我需要
128003848885492
128003848885502
并需要分别比较其他文件中的这些值

请建议


提前感谢。

删除不必要的字符,留下逗号以拆分字符串。这将为您留下一个数字字符串数组

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

删除不必要的字符,留下逗号以拆分字符串。这将为您留下一个数字字符串数组

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

另一种方式,更一般,只分隔数字:

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

另一种方法,更一般,只分隔数字:

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

因此,在
上拆分并使用位置1和3。在
上拆分并使用位置1和3。只需
ArrayValues=split(StringValues,“”)
将i=1拆分为ubound(ArrayValues)步骤2
然后
调试.Print cdbl(ArrayValues(i))
无需进行任何替换。我个人会创建一个声明为long或double的第二个数组,并将数字添加到其中。替换的原因是为了简化比较。他将使用多个数组对多个文件进行比较。数组越简单,比较就越容易。以我的方式进行比较还有其他好处。OP可以放心地在我的数组上使用工作表函数,也可以使用range.resize.Just
ArrayValues=Split(StringValues,“”)
将数组复制到一个范围中,以便i=1的数组进行ubound(ArrayValues)步骤2
然后
调试.Print cdbl(ArrayValues(i))
无需进行任何替换。我个人会创建一个声明为long或double的第二个数组,并将数字添加到其中。替换的原因是为了简化比较。他将使用多个数组对多个文件进行比较。数组越简单,比较就越容易。以我的方式进行比较还有其他好处。OP可以放心地在我的数组上使用工作表函数,也可以使用range.resize将数组复制到一个范围中。