Итак, мой код работает так, что он строит диаграмму на основе значений X в столбце A, а столбцы y представляют собой чередующиеся столбцы (например, средний график значений x = весь столбец1, значения y = весь столбец 2,4,6. .et c, сигма-график x значения = весь столбец1, y значения = весь столбец 3,5,7 ..).
Все мои графики построены на тех же рабочих листах («данные»), но я нахожу это должно быть очень грязно. Я попытался скопировать и вставить все свои диаграммы в различные рабочие листы, а именно в сигмаграфы и средние диаграммы, но он копирует и вставляет только часть средних диаграмм (не уверен, где это пошло не так). Итак, что я могу сделать, чтобы убедиться, что все мои графики в данных копируются и вставляются в соответствии с различными рабочими листами, или можно просто установить назначение диаграмм от начала до сигмаграфов рабочего листа и средних графиков?
В любом случае, я не включил код для сигмаграфов, потому что код будет слишком длинным, но код почти такой же, как и код средних графов с Set rngY = rngDB.Columns (3) и различными осями.
Sub plotgraphs()
Call meangraph
Call sigmagraph
End Sub
Private Sub meangraph()
Dim i As Long, c As Long
Dim shp As Shape
Dim Cht As chart, co As Shape
Dim rngDB As Range, rngX As Range, rngY As Range
Dim Srs As Series
Dim ws As Worksheet
Set ws = Sheets("Data")
Set rngDB = ws.Range("A1").CurrentRegion
Set rngX = rngDB.Columns(1)
Set rngY = rngDB.Columns(2)
Do While Application.CountA(rngY) > 0
Set co = ws.Shapes.AddChart
Set Cht = co.chart
With Cht
.ChartType = xlXYScatter
'remove any data which might have been
' picked up when adding the chart
Do While .SeriesCollection.Count > 0
.SeriesCollection(1).Delete
Loop
'add the data
With .SeriesCollection.NewSeries()
.XValues = rngX.Value
.Values = rngY.Value
End With
'formatting...
With Cht.Axes(xlValue)
.MinimumScale = 5
.MaximumScale = 20
.TickLabels.NumberFormat = "0.00E+00"
End With
Cht.Axes(xlCategory, xlPrimary).HasTitle = True
Cht.Axes(xlValue, xlPrimary).HasTitle = True
End With
Set rngY = rngY.Offset(0, 2) 'next y values
Loop
Dim OutSht As Worksheet
'
Dim PlaceInRange As Range
Set OutSht = ActiveWorkbook.Sheets("sigmagraphs") '<~~ Output sheet
Set PlaceInRange = OutSht.Range("B2:J21") '<~~ Output location
'
' To place charts at a distance between them
For Each chart In Sheets("sigmagraphs").ChartObjects
' OutSht.Paste PlaceInRange
' Code below changes the range itself to something 20 rows below
Set PlaceInRange = PlaceInRange.Offset(20, 0)
Next chart
End Sub
Ожидаемый результат (если графики отсортированы по названию таблицы)