需要VBA代码在Excel中绘制一系列线性数据,创建回归方程';s表示每个系列,然后写出回归方程';在Excel表格中有什么
我有一个相当简单的VBA代码,它完成了我需要它完成的75%,我只是不能让最后一步正常工作 在Excel工作表中,我有两组数据(X数据和Y数据)。对于每种情况,x数据都是相同的两个数据值。然后我有两列数据组成Y数据。我需要创建一个包含大量数据系列的Excel散点图。系列1是两个恒定的x值,第一列的第一个y值和第二列的第一个y值。第二个系列是两个相同的常量x值,第一列的第二个y值和第二列的第二个y值,依此类推。这些列大约有300多行(因此总共>300个系列)。我意识到一个散点图在一个图中最多只能处理256个系列,所以我无法在一个图中全部拟合它们。这不是重点。我试着策划,比如说,50部系列片,我的这一部分做得很好。接下来,因为所有系列都是直线,我需要每个系列的斜率/回归信息,所以我创建一条线性趋势线,并在图表上绘制方程。我已经将此部分自动化,并在Excel中正常工作。不过,这就是我被困的地方。最后一步是,让VBA在单个绘图中创建50个系列并生成所有回归方程后,我需要Excel获取这些方程并将它们粘贴到主工作表(绘图数据所在的位置)的列中。我在谷歌上找到了一些应该这样做的东西(抓取trendline.datalabel.text并将其粘贴到表单中),但它工作不正常,我也不知道我做错了什么。我已经尝试了20种不同的方法,但我的头仍在碰壁。如果您对代码的后半部分有任何帮助,我们将不胜感激。多谢各位需要VBA代码在Excel中绘制一系列线性数据,创建回归方程';s表示每个系列,然后写出回归方程';在Excel表格中有什么,excel,vba,Excel,Vba,我有一个相当简单的VBA代码,它完成了我需要它完成的75%,我只是不能让最后一步正常工作 在Excel工作表中,我有两组数据(X数据和Y数据)。对于每种情况,x数据都是相同的两个数据值。然后我有两列数据组成Y数据。我需要创建一个包含大量数据系列的Excel散点图。系列1是两个恒定的x值,第一列的第一个y值和第二列的第一个y值。第二个系列是两个相同的常量x值,第一列的第二个y值和第二列的第二个y值,依此类推。这些列大约有300多行(因此总共>300个系列)。我意识到一个散点图在一个图中最多只能处理
Sub Plot_slopes()
Dim i As Integer
Dim ChtOb As ChartObject
Dim objTrendline As Trendline
Dim strEquation As String
Set ChtOb = ActiveSheet.ChartObjects.Add(Left:=20, Width:=800, Top:=20, Height:=250)
ChtOb.Chart.ChartType = xlXYScatterSmoothNoMarkers
ChtOb.Activate
i = 9
For i = 9 To 59
With ActiveChart.SeriesCollection.NewSeries
.Name = "FS" & i
.XValues = Worksheets("summary").Range(Worksheets("summary").Cells(3, 7), Worksheets("summary").Cells(4, 7))
.Values = Worksheets("summary").Range(Worksheets("summary").Cells(i, 13), Worksheets("summary").Cells(i, 14))
.Trendlines.Add
End With
With ActiveSheet.ChartObjects(1).Chart
Set objTrendline = .Trendlines(1)
With objTrendline
.DisplayRSquared = False
Trendlines(1).DisplayEquation = True
strEquation = .DataLabel.Text
Range("Q9").Offset(i, 0) = strEquation
End With
End With
Next i
End Sub
我主要需要在第一个with Block之后的代码以及它以activesheet.chartobjects(1.chart)等的新“with…”开头的代码方面的帮助,不过,我在第一个with Block中的.name部分也遇到了问题。目标是获得最后一个块,以便VBA将每个创建系列的回归方程写入主“摘要”工作表您不必从绘图中选择回归-您可以直接使用公式进行回归-例如,谢谢-这实际上是一个伟大的观点-我不知道您可以使用公式进行回归。我可以用这种方法完全绕过VBA。谢谢