我的问题是:我在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。答案 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