2016-07-23 6 views
0

を使用して( 'と')の間でデータを抽出します。vbaコードを使用して( 'と')の間でデータを抽出します。 たとえばstring =" ('128003848885492'), ('128003848885502')"128003848885492および128003848885502が必要であり、これらの値を別のファイルで別々に比較する必要があります。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に分割します、 "'") '' i = 1〜ubound(ArrayValues)Step 2'の場合、 'Debug.Print cdbl(ArrayValues(i))'は何も置換する必要はありません。 –

+0

ここをクリックhttp://imgur.com/a/vLJIo –

+0

個人的には、longまたはdoubleとして宣言して2番目の配列を作成し、それに数値を追加します。その理由は、比較を簡単にするためです。彼は複数の配列を使って複数のファイルを比較するつもりです。配列が単純になればなるほど、比較は容易になります。 –

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