Ошибка при использовании WorkSheetFunction.Trend в макросе vba - PullRequest
0 голосов
/ 14 сентября 2018

Вот моя проблема: я пытаюсь реализовать функцию тренда в макросе, но получаю ошибку 1004. Я пробовал несколько модификаций, но до сих пор не смог исправить проблему, которая, вероятно, происходит из определенияиз моих объектов.

Я прикрепил код вниз: первая часть берет данные из одного листа Excel и создает переменные, необходимые для функции тренда:

Sub PolynomialeApproximation()

Set mySheet = ActiveSheet

nb_lg = mySheet.Cells.SpecialCells(xlCellTypeLastCell).Row
nb_cl = mySheet.Cells.SpecialCells(xlCellTypeLastCell).Column
nb_x2 = 100

Dim Tabl1(101, 7) As Variant
Dim Tabl2(100, 6) As Variant
Dim x1(100, 6) As Variant
Dim x2(6) As Variant
Dim y1(100) As Variant
Dim y2(100) As Variant

cl = 1 'define the column number of the new table

For j = 1 To nb_cl
    If InStr(mySheet.Cells(1, j).Value, "distance rect [mm]") <> 0 Then
        For i = 1 To nb_lg - 1
            Tabl1(i, cl) = ActiveSheet.Cells(i + 1, j).Value
            Tabl1(i, cl + 1) = (mySheet.Cells(i + 1, j).Value) ^ 2
            Tabl1(i, cl + 2) = (mySheet.Cells(i + 1, j).Value) ^ 3
            Tabl1(i, cl + 3) = (mySheet.Cells(i + 1, j).Value) ^ 4
            Tabl1(i, cl + 4) = (mySheet.Cells(i + 1, j).Value) ^ 5
            Tabl1(i, cl + 5) = (mySheet.Cells(i + 1, j).Value) ^ 6
            Tabl1(i, cl + 6) = mySheet.Cells(i + 1, j - 1).Value


        Next i



        lg = -5

        For ite = 1 To nb_x2

        Tabl2(ite, 1) = lg
        Tabl2(ite, 2) = lg ^ 2
        Tabl2(ite, 3) = lg ^ 3
        Tabl2(ite, 4) = lg ^ 4
        Tabl2(ite, 5) = lg ^ 5
        Tabl2(ite, 6) = lg ^ 6

Вот какданные устанавливаются в массиве непосредственно перед использованием функции тренда:

            For subite = 1 To nb_lg - 1
                y1(subite) = Tabl1(subite, 7)
                For subite2 = 1 To 6
                    x1(subite, subite2) = Tabl1(subite, subite2)
                    Next subite2
                Next subite
           For subite2 = 1 To 6
               x2(subite2) = Tabl2(ite, subite2)
               Next subite2


        y2(ite) = Application.WorksheetFunction.Trend(y1, x1, x2)

        lg = lg + 0.1

        Next ite


    cl = cl + 8

    End If

Next j

End Sub

Точная строка, вызывающая проблемы:

y2(ite) = Application.WorksheetFunction.Trend(y1, x1, x2)
...