Sub test()
Dim strInput as String
Dim ar2()
Dim ar3()
strInput = "10,20,30,40,50,60,70"
ar1 = Split(strInput, ",")
End Sub
我如何将ar1阵列(10,20,30,40,50,60,70)分成两个数组,ar2 =(10,20,30,40,50)和ar3 =(60,70)。
答案 0 :(得分:0)
试试这段代码:
Sub Test()
Dim strInput As String
Dim IC As Long
IC = 5 ' Items Count in first array ar1
Dim ar2()
Dim ar3()
strInput = "10,20,30,40,50,60,70"
ar1 = Split(strInput, ",")
ReDim ar2(IC - 1)
ReDim ar3(UBound(ar1) - IC)
For i = 0 To IC - 1
ar2(i) = ar1(i)
Next
For i = 0 To UBound(ar1) - IC
ar3(i) = ar1(i + IC - 1)
Next
'Test:
Debug.Print "ar2:"
For i = LBound(ar2) To UBound(ar2)
Debug.Print ar2(i)
Next
Debug.Print "======" & Chr(13) & "ar3:"
For i = LBound(ar3) To UBound(ar3)
Debug.Print ar3(i)
Next
End Sub
答案 1 :(得分:0)
如果你想通过一个分割点(比如说55在这种情况下),你可以这样做(我假设下面的所有内容都是一个整数。你可以用浮点数或双打数做同样的事情,但如果你不首先将它们转换为整数,那么字符串将会更加困难。要将真正整数的字符串转换为整数,只需执行CInt("10")
。
我设置它的方式,你必须传入2个空数组A1和A2,这将填充它们:
Sub Split(A() As Integer, A1() As Integer, _
A2() As Integer, Mid As Integer)
' Grab the length of array A.
Dim Alen As Integer
Alen = UBound(A)
Dim I As Integer
Dim SplitIdx As Integer
SplitIdx = Alen
' Loop through A to find out where to split it.
For I = 1 To Alen
If A(I) > Mid Then
SplitIdx = I - 1
Exit For
End If
Next I
' Make sure we aren't doing anything ridiculous.
If SplitIdx = 0 Or SplitIdx = Alen Then
Exit Sub
End If
' Now we can basically do the same thing that Fadi did.
ReDim A1(SplitIdx)
ReDim A2(Alen - SplitIdx)
' Now we can just fill it out!
For I = 1 To Alen
If I <= SplitIdx Then
A1(I) = A(I)
Else
A2(I - SplitIdx) = A(I)
End If
Next I
End Sub
例如,要使用此功能,您可以执行以下操作:
' Recreate the array as an integer
Dim ar1int() As Integer
For I = 1 To 7
ar1int = I * 10
Next I
Dim ar2() As Integer
Dim ar3() As Integer
Call Split(ar1int, ar2, ar3, 55)
答案 2 :(得分:0)
或者就像这样:
Sub test()
Dim strInput As String
Dim ar
Dim ar1
Dim ar2
' If you have some freedom to choose the text
strInput = "10,20,30,40;50,60,70"
'^ Use here some other separator
ar = Split(strInput, ";")
ar1 = Split(ar(0))
ar2 = Split(ar(1))
End Sub