2017-02-15 2 views
0

Mein Problem ist das: Ich verarbeite Daten in einem Excel-Makro, dieser Prozess generiert Diagramme und ermöglicht es, zwei Punkte auf einem der Diagramme auszuwählen.Linienschätzung zwischen zwei Punkten in einem Graphen VBA Excel

Ich nehme den Index der ausgewählten Punkte und speichern sie in Variablen. Ich würde gerne wissen, ob es möglich ist, eine lineare Regressionslinie zu erstellen, um die direkten Koeffizienten der Regressionsgeraden zwischen diesen beiden Punkten wiederzugewinnen.


(original Französisch Frage)

Mon problème est le suivant: Je traite des données dans une Makro excel, ce traitement GENERE des graphiques. De plus la macro permet de sélectionner deux points sur des graphiques. Je récupère donc l'index des points et les stoque dans des variables. J'aimerai savoir s'il ist es möglich, die faire une droite de régression lineaire pour pouvoir récuperer le coefficient directeur de la droite de régression entre ces deux points.

+0

Suchen Sie die [Funktion RGP] (https://support.office.com/en-us/article/LINEST-function-84D7D0D9-6E50-4101-977A-FA7ABF772B6D)? –

+0

Ja, aber ich weiß nicht, wie es zwischen meinen beiden Punkten funktioniert –

+0

Können Sie die 'Reichweite' der Werte zwischen diesen beiden Punkten wiederherstellen? –

Antwort

1

Die folgende Funktion berechnet die Linie der kleinsten Quadrate bei zwei Punkten einer Reihe in einem Diagrammobjekt.

' Calculates the "a" and "b" of the least squares line 
' given a series and two indexes on the series 
' returns an array(1 to 2) where a is (1) and b is (2) 
Function linest(s As Series, idx1 As Long, idx2 As Long) 
    ReDim Xs(idx1 To idx2) ' The X values 
    ReDim Ys(idx1 To idx2) ' The Y values 
    Dim i As Long 
    For i = idx1 To idx2 
     Xs(i) = s.XValues(i) 
     Ys(i) = s.values(i) 
    Next 
    linest = WorksheetFunction.linest(Ys, Xs) 
End Function 

Usage

Dieser Test ein Diagramm aus sheet1 Spalten schafft A (X) und B (Y ist). Dann berechnet er mit Hilfe der obigen Funktion die kleinste Quadrate für die Werte zwischen dem 5. und dem 15. Punkt.

Sub Test() 
    ' first let us create a chart object and a series 
    Dim ch As ChartObject, s As Series 
    Set ch = Sheet1.ChartObjects.Add(10, 10, 500, 250) 
    Set s = ch.Chart.SeriesCollection.NewSeries 
    s.XValues = Sheet1.Range("A1:A20") 
    s.values = Sheet1.Range("B1:B20") 

    ' calculate the least-squares line between 5th and 15th points 
    Dim eq: eq = linest(s, 5, 15) 

    ' display the results 
    Debug.Print " The least squares line is:" & vbCrLf & vbCrLf & _ 
       " Y = " & eq(1) & "*X + " & eq(2) 
End Sub 
+0

Ich werde das morgen früh versuchen und dir davon erzählen. Vielen Dank für den Versuch, mein Problem zu beheben (und Entschuldigung für mein Englisch) –

+0

Vielen Dank für die Hilfe –

+0

@ K.Fanedoul Sie sind herzlich willkommen. –

Verwandte Themen