Я пытаюсь заполнить, а затем выполнить вычисления на основе довольно большого массива. Это необходимо для заполнения биномиального дерева для расчета цены опциона, поэтому после заполнения массива мне нужно будет выполнить повторное вычисление, поэтому я бы предпочел иметь 3 измерения в моем массиве для более легкой ссылки далее в коде. Первое измерение - это количество прошедших периодов, второе измерение - это увеличение цены, а третье - это уменьшение цены.
Dim arr() As Double
Dim periods As Integer
Dim p As Long, i As Long
Dim u As Double, d As Double
Dim iniprice As Double
Let periods = 400
Let iniprice = 100
Let u = 1.1
Let d = 0.9
ReDim arr(0 To periods, 0 To periods, 0 To periods)
Let arr(0, 0, 0) = iniprice
For p = 1 To UBound(arr, 1)
For i = 0 To p
arr(p, i, p - i) = WorksheetFunction.RoundDown(arr(0, 0, 0) * u ^ i * d ^ (p - i), 2)
Next i
Next p
Это ограничение связано с объемом оперативной памяти, доступной на моем ПК (в настоящее время имеет 8 ГБ), или это ограничение самого VBA? Поскольку один период обычно равен одному дню, значение периодов 1000 является нормальным (252 дня = 1 торговый год).
Я также заметил, что у меня много неиспользуемых значений, потому что я хочу заполнить только значения, имеющие этот формат arr (p, i, pi), такие значения, как arr (10,10,10), будут равны 0. Я был бы очень признателен, если бы обойти это.