填充没有循环的数组

时间:2016-11-16 15:12:35

标签: arrays vba performance excel-vba populate

我正在努力避免使用LOOPS用于填充数组,因为显然他们在管理大量数据时会花费大量时间。

显然,在VBA中这是可能的,也很容易。 但经常导致问题。

这里是代码:

sub populate()
'put the whole column in an array
Dim AppArray() As Variant
Dim AppRange As Range
'calculate the last row of the column 1 of sheets
Dim LstRow As Integer
LstRow = Sheets("whole").Cells(Sheets("whole").Rows.Count, "A").End(xlUp).row
'here I calculate the range that I want to pass to the array
Set AppRange = Sheets("whole").Range(Cells(1, 1), Cells(LstRow, 1))
MsgBox ("apprange " & AppRange.Address)
'i dont know if I need to redim or not
ReDim AppArray(1 To LstRow)
'here comes the point. populate the array with the values of the range
AppArray = AppRange.Value
End Sub

这不起作用。我也尝试使用application.tranpose(AppRange.Value),但也没有用。

我用过:

For i = 1 To LstRow
Debug.Print AppArray(i)
Next

并出现错误,所以不知道有这样的AppArray(1)

如果你能对此发表评论,我将非常高兴。不仅仅是安排代码建议甚至oterh页面(链接),以便在事先不知道这些范围时使用范围值填充数组。 如果情况是循环是非常耗时的并且阵列可以立即填充我不明白为什么99%的引用数组的页面使用循环(或嵌套循环)来填充数组。

PS:这是我第一次在stackoverflow中输入一个问题,这是我指导和教师指导和教授的最后一个月。感谢。

1 个答案:

答案 0 :(得分:0)

我找到了答案。

dim myRange as range
dim myArray() as variant
myRange = range(cells(2,3),cells(10,15))
redeem myArray(1 to 20,1 to 20)
myArray=myRange

使用变量和数组比使用单元格值要快得多。