我的 NUMERIC 数组是 A(0 到 99)。
我想删除第十个元素A(9),把A(0到8)和A(10到99)两部分一起放到A(0到98)中。
这是对真实情况的简化,在循环中多次删除不同的元素,并且数组包含超过 300 000 个元素,因此执行时间很重要。如何以有效的方式解决这个问题。
谢谢你的帮助。
我的 NUMERIC 数组是 A(0 到 99)。
我想删除第十个元素A(9),把A(0到8)和A(10到99)两部分一起放到A(0到98)中。
这是对真实情况的简化,在循环中多次删除不同的元素,并且数组包含超过 300 000 个元素,因此执行时间很重要。如何以有效的方式解决这个问题。
谢谢你的帮助。
您可以尝试使用集合:
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
子测试()
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
结束子
此代码适用于为 collA 分配值,但 Remove 语句有什么问题?
我想删除 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