Имам някои много големи набори от данни в 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".
Някакви идеи за поддържане на границите на масива, както ги дефинирах първоначално? Знам, че преминаването през работния лист, за да се направи задачата, ще го направи, но ще бъде бавно.
Благодаря предварително.
ReDim
, за да декларирате отново масива с долна граница от10
, тук:ReDim myArray(myOffset to ...
. Какво точно се опитвате да направите с променливатаmyOffset
? Мисля, че това е причината. - person David Zemens   schedule 21.10.2013this
b> може да ви помогне. - person   schedule 21.10.2013