我在 Excel 中有一些非常大的数据集,我需要对其进行解析 - 并且在数组中执行它比遍历工作表中的数据要快。将所有数据加载到数组中会导致内存问题(数据集那么大),因此我计划将数据的子集加载到数组中,对其进行处理,然后再加载另一个子集。我希望使用定义 LBound 和 UBound 的数组“功能”来帮助我跟踪我在工作表中的位置。但我发现将工作表值分配给数组会改变界限。以下代码演示了问题...
Sub myTest3()
Dim myRange As Range
Dim myArray As Variant
Dim myOffset As Long
myOffset = 10
Set myRange = Worksheets("RawData").Range("A1").CurrentRegion
ReDim myArray(myOffset To myRange.Rows.Count, myRange.Columns.Count)
MsgBox LBound(myArray, 1) & " to " & UBound(myArray)
Set myRange = myRange.Offset(myOffset, 0).Resize(myRange.Rows.Count - myOffset, myRange.Columns.Count)
myArray = myRange.Value2
MsgBox LBound(myArray, 1) & " to " & UBound(myArray)
End Sub
第一个 MsgBox 给了我“10 到 10931”。第二个 MsgBox 给了我“1 到 10921”。
关于维护我最初定义的数组边界的任何想法?我知道循环通过工作表进行分配会做到这一点,但它会很慢。
提前致谢。