我的NUMERIC数组是A(0到99)。
我想删除第十个元素A(9)并将A(0到8)和A(10到99)这两个部分放在一起(0到98)。
这是对实际情况的简化,其中在循环内多次删除不同的元素,并且该数组包含超过300 000个元素,因此执行时间非常重要。 如何以有效的方式解决这个问题。
感谢您的帮助。
答案 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