如何在VBA

时间:2016-01-12 18:25:05

标签: vba

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)。

3 个答案:

答案 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