Я пытаюсь создать бутстрап в VBA с использованием массивов, и он не работает. У меня есть набор данных двух акций с данными в колонках В и С:Bootstrap, массивы, большой набор данных, vba
16/08/2016 79.84 70.87
15/08/2016 80.26 71.79
12/08/2016 80.22 71.7
11/08/2016 80.56 71.98
10/08/2016 80.55 71.21
09/08/2016 81.5 73.05
08/08/2016 81.6 72.25
05/11/1990 17.5625 6.4011
02/11/1990 17.0938 6.4358
01/11/1990 17 6.5137
31/10/1990 16.8438 6.583
30/10/1990 17.3438 6.4444
29/10/1990 17.7813 6.3232
мне нужно выбрать случайным образом 10000 раз из колонки C, взять среднее и отображение в ячейке D1. Затем генерируйте случайные 10 000 раз и показывайте в D2 и т. Д. Аналогично для E1, E2, ..., En, но на основе данных в столбце C.
Поскольку наборы данных являются большими с двумя или более запасами и методологией требует много запусков, простая печать среднего значения каждый раз в каждую ячейку занимает очень много времени. Поэтому мне нужно использовать массивы, и я не понимаю. Я могу сделать это «вручную», но я уверен, что есть лучший способ.
Приведенный ниже код требует много времени для работы на моем компьютере, так как он печатает в электронной таблице каждый раз. Я знаю, что сохраняю симулированные значения в массиве simval()
при запуске, но затем он удаляется при Redim. В идеале я хочу поднять данные в массив, имитировать новый дистрибутив и распечатать результаты рядом с исходными данными.
Sub bstrap()
Dim miRange As Range
Dim avgsimvals() As Double, simval() As Double
Dim start As Double, secs As Double
start = Timer
r = Range("A1").CurrentRegion.Rows.Count
c = 4
Set miRange = Range(Cells(1, 2), Cells(r, 2))
For j = 1 To 100 '100 runs takes over 90 secs, approx 2.5 hrs for 10,000
ReDim simval(1 To r)
For i = 1 To r
simval(i) = WorksheetFunction.Index(miRange, r * Rnd() + 1)
Cells(i, c).Value = simval(i)
Next i
c = c + 1
Next j
secs = Round(Timer - start, 6)
MsgBox "run in " & secs, vbInformation
End Sub
Привет, спасибо за быстрый ответ. Я понимаю, что это не ясно, извиниться за это. Однако вы поняли, чего я хочу. У меня более 6500 строк данных в столбцах B и C, цены на акции. Я хочу создать аналогичный набор данных, то есть 6500 строк, используя метод повторной выборки. Ваш код не работает на моем ПК, выбросив ошибку «из памяти» и после того, как я внес 10000 до 1000, потребовалось 7 секунд для создания двух ячеек данных. Я хочу генерировать данные с использованием повторной выборки для заполнения диапазона («D1: E6500»). Интересно, будет ли этот код эффективным для этой цели? Еще раз спасибо. – VictorD
Просьба описать необходимые вычисления. И когда сообщения об ошибках всегда указывают, какая строка их бросает. – user3598756