У меня довольно простой код VBA, который выполняет 75% от того, что мне нужно, я просто не могу заставить последний шаг работать должным образом.
В листе Excel у меня есть два набора данных (данные X и данные Y). Данные x - это те же два значения данных для каждого отдельного случая. Затем у меня есть два столбца данных, которые составляют данные Y. Мне нужно создать точечный график Excel с целой кучей рядов данных. Ряд 1 - это два постоянных значения x с первым значением y из первого столбца и первым значением y из второго столбца. 2-я серия - это те же самые две постоянные значения x со вторым значением y из первого столбца и вторым значением y из второго столбца и так далее. Столбцы имеют около 300+ строк (следовательно, всего> 300 серий). Я понимаю, что точечный график может содержать до 256 рядов на одном графике, поэтому я не смогу разместить их все в одном графике. Не в этом дело. Я пробовал рисовать, как, скажем, 50 серий, и у меня эта часть работает нормально. Далее, поскольку все серии являются прямыми линиями, мне нужна информация о наклоне / регрессии для каждой серии, поэтому я создаю линейную линию тренда и строю уравнение на графике. У меня эта часть автоматизирована и корректно работает и в Excel. Вот где я застрял. Последний шаг - после того, как VBA создала, скажем, 50 рядов на одном графике и сгенерировала все уравнения регрессии, мне нужно, чтобы Excel взял эти уравнения и вставил их в столбец главной таблицы (где находятся данные графика). Я нашел в Google что-то, что должно было бы сделать это (захват Trendline.datalabel.text и вставка его в лист), но это не работает правильно, и я не могу понять, что я делаю неправильно. Я попробовал 20 разных вещей и все еще бью себя головой о стену. Любая помощь с последней половиной кода будет принята с благодарностью. СПАСИБО.
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 и где он начинается с нового "with" ... "с activesheet.chartobjects (1) .chart" и т. Д. ), хотя у меня также возникают проблемы с частью .name в первом блоке With. Цель состоит в том, чтобы получить последний блок так, чтобы VBA записал уравнения регрессии для каждого созданного ряда в основной «сводный» рабочий лист