Можно ли использовать массив в функции LinEst в VBA?
По сути, вместо выбора диапазона из ячеек я сохранил значения в массиве с помощью цикла. В идеале я хотел бы использовать эти массивы в качестве известных х 'с и уs в функции LinEst.
Цель этого не важна, поскольку то, что я пытаюсь сделать, является лишь частью кода, который я уже написал. Тем не менее, циклы Do (ну, по крайней мере, 2-й) действительно должны быть там, поскольку код, к которому я пытаюсь применить это, требует их для функционирования.
Ниже приведен простой пример кода, который я пытаюсь написать.
Sub Test()
Dim Counter As Long
Dim Counter_1 As Long
Dim x As Single
Dim y As Single
Dim i As Single
Dim m As Single
Dim myArray_1() As Single
Dim myArray_2() As Single
ReDim myArray_1(i)
ReDim myArray_2(i)
Counter = 2
Counter_1 = 2
i = 0
Cells(1, 4) = "m"
x = Cells(Counter, 1)
y = Cells(Counter, 2)
Do
Do Until x = 0
myArray_1(i) = x
myArray_2(i) = y
Cells(Counter, 6) = myArray_1(i)
Cells(Counter, 7) = myArray_2(i)
i = i + 1
Counter = Counter + 1
x = Cells(Counter, 1)
y = Cells(Counter, 2)
ReDim Preserve myArray_1(i)
ReDim Preserve myArray_2(i)
Loop
m = WorksheetFunction.LinEst(myArray_2, myArray_1)
Cells(Counter_1, 4) = m
Loop
End Sub
Поэтому я хочу, чтобы функция LinEst использовала каждый массив как известнос и известный х 's. В зависимости от того, что я изменяю, я получаю разные ошибки, такие как «несоответствие типов", или же "не удалось получить свойство LinEst класса функции worksheet ", В любом случае, мне пока не везло в том, чтобы заставить это работать, и всегда ошибки. Из функции LinEst все, что мне нужно, это градиент 'm'.
Единственная причина, по которой вещи были помещены в ячейки, это чтобы убедиться, что код выполняет то, что я от него требую.
Из того, что я могу сказать, просматривая Интернет, можно использовать массив внутри функции LinEst, однако примеры, как правило, кардинально отличаются от того, что я пытаюсь сделать.
Если кто-то может помочь вообще, я был бы очень признателен. Заранее спасибо. Любые вопросы, не стесняйтесь спрашивать.