我正在尝试使用宏将趋势线的等式从图形复制粘贴到单元格。我在Selection.copy
遇到错误。
Sub Equations()
'Equations Macro
'Keyboard Shortcut: Ctrl+e
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(1).Trendlines(1).DataLabel.Select
Selection.Copy
ActiveWindow.SmallScroll Down:=3
Range("C56").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(2).Trendlines(1).DataLabel.Select
Selection.Copy
Range("D56").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(3).Trendlines(1).DataLabel.Select
Selection.Copy
Range("E56").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(4).Trendlines(1).DataLabel.Select
Selection.Copy
Range("F56").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(5).Trendlines(1).DataLabel.Select
Selection.Copy
Range("G56").Select
ActiveSheet.Paste
End Sub
答案 0 :(得分:1)
这是在图表的SeriesCollection
中循环并从与其中的每个Series
相关的趋势线中提取方程的一种方法。如果需要,可以将SeriesCollection
的每个实例更改为FullSeriesCollection
。
代码
Trendline
-请注意可能有多个。该代码仅处理第一个,但可以轻松修改以遍历多个趋势线。TrendLine
是否正在显示其方程式。 Range
。在这里,Offset
会为每个连续的趋势线向右移动1列。在第一次迭代中,B56
的偏移量为1列,因此您的方程式出现在C56
中。Sub Equations()
Dim chrtObj As ChartObject
Dim i As Integer
Set chrtObj = Sheets("Sheet1").ChartObjects("Chart 1") ' Change to your sheet name here
With chrtObj.Chart
For i = 1 To .SeriesCollection.Count
If .SeriesCollection(i).Trendlines.Count > 0 Then
With .SeriesCollection(i).Trendlines(1)
If .DisplayEquation Then
Sheets("Sheet1").Range("B56").Offset(0, i).Value = .DataLabel.Text ' Change sheet name here as well
End If
End With
End If
Next i
End With
End Sub