在VBA中连接数字数组的部分

时间:2013-09-01 10:46:09

标签: vba

我的NUMERIC数组是A(0到99)。

我想删除第十个元素A(9)并将A(0到8)和A(10到99)这两个部分放在一起(0到98)。

这是对实际情况的简化,其中在循环内多次删除不同的元素,并且该数组包含超过300 000个元素,因此执行时间非常重要。 如何以有效的方式解决这个问题。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用Collection:

Sub test()
    Dim c As New Collection

    c.Add "a"
    c.Add "b"
    c.Add "c"
    c.Add "d"

    c.Remove 2

    For Each ch In c
        Debug.Print ch
    Next

End Sub

答案 1 :(得分:0)

子测试()

Dim A(6) As New Collection ' 7 arrays
Dim i As Long

For i = 0 To 367907
    A(0).Add Worksheets("Sheet1").Cells(i + 1, 1)
    A(1).Add Worksheets("Sheet1").Cells(i + 1, 2)
    A(2).Add Worksheets("Sheet1").Cells(i + 1, 3)
    A(3).Add Worksheets("Sheet1").Cells(i + 1, 4)
    A(4).Add Worksheets("Sheet1").Cells(i + 1, 5)
    A(5).Add Worksheets("Sheet1").Cells(i + 1, 6)
    A(6).Add Worksheets("Sheet1").Cells(i + 1, 7)
xt i

End Sub

答案 2 :(得分:0)

此代码适用于为collA赋值,但是删除语句有什么问题? 我想删除collA(1)(9,0),collA(1)(9,1),collA(1)(9,2),collA(1)(9,3),collA(1)(9) ,4),collA(1)(9,5)和collA(1)(9,6)。

Sub Test()

    Dim A() As Integer
    Redim A(0 To 367907, 0 To  6) As Integer

    Dim i As Long
    Dim j As Integer

    For i = 0 To 367907
    For j = 0 To 6    
        A(i, j) = Worksheets("Sheet1").Cells(i + 1, j + 1)
    Next j
    Next i

    Dim collA As VBA.Collection

    Set collA = New Collection
    collA.Add A

    Erase A

    collA(1).Remove 10

End Sub