2017-07-25 8 views
0

Ich bin neu mit Excel VBA. Ich versuche, eine Funktion in meiner Arbeitsmappe zu machen, die die Excel-Linest-Funktion ausführt. Ich habe einen Bereich (pqr), in dem die erste Spalte Y-Variablen und die zweite Spalte X-Variable ist. Ich möchte R1 und R2 als Variablen im Code zuweisen. Ich habe versucht, Code aus anderen Threads zu bekommen, aber dies unten ist der Code, den ich schrieb ...Set Bereich von einem anderen Bereich Name

Function LinestTest(pqr As Range) 
Dim vCoeff As Variant 
Dim r1 As Range 
Dim r2 As Range 
Set r1 = Range(pqr).Offset(, 1) 
Set r2 = Range(pqr).Offset(, 0) 
vCoeff = WorksheetFunction.LinEst(r1, Application.Power(r2, Array(1, 2, 3))) 
LinestTest = vCoeff 

Wenn ich pass R1 und R2 getrennt, der Code funktioniert.

Antwort

1

Da pqr als Range definiert ist, müssen Sie die Eigenschaft Offset direkt darauf anwenden.

ersetzen:

Set r1 = Range(pqr).Offset(, 1) 
Set r2 = Range(pqr).Offset(, 0) 

mit:

Set r1 = pqr.Offset(, 1) 
Set r2 = pqr.Offset(, 0) 

B.T.W

Set r2 = pqr.Offset(, 0) entspricht Set r2 = pqr

+0

Danke Shai für die Antwort .. Ich habe es durch Größe ändern ... – kaleassv

0

Dies arbeitet ..

Function LinestTest(pqr As Range) 
    Dim vCoeff As Variant 
    Dim r1 As Range 
    Dim r2 As Range 
    'Set r1 = pqr.Offset(, 1) 
    'Set r2 = pqr.Offset(, 2) 
    Set r2 = pqr.Offset(0, 0).Resize(pqr.Rows.Count, pqr.Columns.Count - 1) 
    Set r1 = pqr.Offset(0, 1).Resize(pqr.Rows.Count, pqr.Columns.Count - 1) 

    vCoeff = WorksheetFunction.LinEst(r1, Application.Power(r2, Array(1, 2, 3))) 
    LinestTest = vCoeff 
End Function 
Verwandte Themen