图形VBA Excel上两点之间的线估计

时间:2017-02-15 18:28:50

标签: excel vba excel-vba

我的问题是:我在excel宏中处理数据,这个过程生成图表,并且可以在其中一个图表上选择两个点。

我正在拾取所选点的索引并将它们存储在变量中。我想知道是否有可能建立一个线性回归线,以便重新获得这两点之间回归线的直接系数。

(原法语问题)

Monpoplèmeestle suivant:Je traitedesdonnéesdansune macro excel,cetraitementgénèredesgraphiques。 De plus la macro permetdesélectionnerdeuxpoints sur un des graphiques。 Jerécupèredoncl'index des points et les stoque dans des variables。 J'aimerai savoir s'il est可能de faire une droitederégressionlineairepourpouvoirrécupererlecoefficient directeur de la droitederégressionentreces deux points。

1 个答案:

答案 0 :(得分:1)

以下函数计算给定图表对象中一系列的两个点的最小二乘线。

' 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

<强>用法

此测试从sheet1列A(X&#39; s)和B(Y&#39; s)创建图表。 然后使用上面的函数计算第5点和第15点之间值的最小二乘线。

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