Всех приветствую! Прошу помощи с задачей построения диаграммы в VBA. Есть множество листов, в каждом диапазоны в тех же ячейках, на основании которых строятся диаграммы. В каждой диаграмме несколько рядом (например, 3) со своими значениями Х и Y. Проблема в том, чтобы диаграмма строилась по значениям из диапазона активного листа. Сейчас получилось только добиться того, чтобы на всех листа данные диаграммы брались из первого листа. У меня указаны именованные диапазоны, но это непринципиально. Я пытался через них решить проблему.
Set xRg = Range("B5:M20") Set xChart = ActiveSheet.ChartObjects(1) With xChart .Top = xRg(1).Top .Left = xRg(1).Left .Width = xRg.Width .Height = xRg.Height End With
написал: Без файл примера, навскидкуКодActiveChart.FullSeriesCollection(1).XValues= "='" & ActiveSheet.Name & "'!A1:A10" ActiveChart.FullSeriesCollection(1).Values= "='" & ActiveSheet.Name & "'!B1:B10" Диапазоны свои вставите, с другими рядами по аналогии
Sub Grafik_excel()
Dim ws As Worksheet
Dim xRg As Range
Dim xChart As ChartObject
For Each ws In Worksheets 'для каждого листа
ws.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
Set xRg = Range("B5:M20")
Set xChart = ws.ChartObjects(1)
With xChart
.Top = xRg(1).Top
.Left = xRg(1).Left
.Width = xRg.Width
.Height = xRg.Height
End With
With xChart.Chart
'данные для построения графиков
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = "='" & ws.Name & "'!$N$2:$X$2"
.FullSeriesCollection(1).Values = "='" & ws.Name & "'!$N$3:$X$3"
.SeriesCollection.NewSeries
.FullSeriesCollection(2).XValues = "='" & ws.Name & "'!$N$4:$X$4"
.FullSeriesCollection(2).Values = "='" & ws.Name & "'!$N$5:$X$5"
.SeriesCollection.NewSeries
.FullSeriesCollection(3).XValues = "='" & ws.Name & "'!$N$6:$X$6"
.FullSeriesCollection(3).Values = "='" & ws.Name & "'!$N$7:$X$7"
End With
Next
End Sub
Добавить в код массив названиями листов, на которых не надо строить график:
Код
Sub Grafik_excel()
Dim ws As Worksheet
Dim xRg As Range
Dim xChart As ChartObject
ListIkl = Array("Лист3", "Лист4") 'листы, которые нужно исключить
For Each ws In Worksheets 'для каждого листа
If Not IsNumeric(Application.Match(ws.Name, ListIkl, 0)) Then
ws.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
Set xRg = Range("B5:M20")
Set xChart = ws.ChartObjects(1)
With xChart
.Top = xRg(1).Top
.Left = xRg(1).Left
.Width = xRg.Width
.Height = xRg.Height
End With
With xChart.Chart
'данные для построения графиков
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = "='" & ws.Name & "'!$N$2:$X$2"
.FullSeriesCollection(1).Values = "='" & ws.Name & "'!$N$3:$X$3"
.SeriesCollection.NewSeries
.FullSeriesCollection(2).XValues = "='" & ws.Name & "'!$N$4:$X$4"
.FullSeriesCollection(2).Values = "='" & ws.Name & "'!$N$5:$X$5"
.SeriesCollection.NewSeries
.FullSeriesCollection(3).XValues = "='" & ws.Name & "'!$N$6:$X$6"
.FullSeriesCollection(3).Values = "='" & ws.Name & "'!$N$7:$X$7"
End With
End If
Next
End Sub