У меня есть 12 динамических таблиц (таблиц на основе комбинаций) в таблице Excel, которые извлекают данные из других листов по формулеТаким образом, за раз, только одна таблица будет иметь данные за раз, поэтому только один график будет создан на основе этих данных.Это макрос создания диаграммы, который я записал, и я добавил в него оператор if, если в ячейке есть это конкретное значение, он создаст график, иначе он не будет создавать график
Так что, если ячейка C1в комбинированном графическом листе в качестве значения указано «Vub», он сгенерирует график, иначе не будет.
`Sub Chart_1()
If Target.Address = "$C$1" Then
If Target.Value = "Vub" Then
Range("I2").Select
ActiveSheet.Shapes.AddChart2(227, xlLine).Select
ActiveChart.SetSourceData Source:=Range("'Combination Graphs'!$A$1:$CF$1402")
ActiveChart.ChartTitle.Select
ActiveChart.ChartArea.Select
Application.CutCopyMode = False
Application.CutCopyMode = False
Application.CutCopyMode = False
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveChart.FullSeriesCollection(1).Delete
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(1).Name = "='Combination Graphs'!$J$1"
ActiveChart.FullSeriesCollection(1).Values = "==UAT_17.12.2018.xlsx!Vub_c2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "='Combination Graphs'!$K$1"
ActiveChart.FullSeriesCollection(2).Values = "==UAT_17.12.2018.xlsx!Aub_c2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "='Combination Graphs'!$L$1"
ActiveChart.FullSeriesCollection(3).Values = "==UAT_17.12.2018.xlsx!Vne_c2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(4).Name = "='Combination Graphs'!$M$1"
ActiveChart.FullSeriesCollection(4).Values = "==UAT_17.12.2018.xlsx!Isig_c2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(5).Name = "='Combination Graphs'!$N$1"
ActiveChart.FullSeriesCollection(5).Values = "==UAT_17.12.2018.xlsx!Ipe_c2"
ActiveChart.FullSeriesCollection(5).XValues = "==UAT_17.12.2018.xlsx!Date_c2"
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale
ActiveChart.PlotArea.Select
ActiveChart.SetElement (msoElementLegendRight)
Application.CommandBars("Format Object").Visible = False
ActiveChart.Legend.Select
ActiveChart.Legend.Select
Selection.Position = xlBottom
Application.CommandBars("Format Object").Visible = False
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Chart 7").ScaleWidth 0.9563952318, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Chart 7").ScaleHeight 1.1266149023, msoFalse, _
msoScaleFromTopLeft
Range("O26").Select
ActiveSheet.ChartObjects("Chart 7").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = "Steady State Occurence 2"
Selection.Format.TextFrame2.TextRange.Characters.Text = _
"Steady State Occurence 2"
With Selection.Format.TextFrame2.TextRange.Characters(1, 24).ParagraphFormat
.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With
With Selection.Format.TextFrame2.TextRange.Characters(1, 12).Font
.BaselineOffset = 0
.Bold = msoFalse
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(89, 89, 89)
.Fill.Transparency = 0
.Fill.Solid
.Size = 14
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Spacing = 0
.Strike = msoNoStrike
End With
With Selection.Format.TextFrame2.TextRange.Characters(13, 12).Font
.BaselineOffset = 0
.Bold = msoFalse
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(89, 89, 89)
.Fill.Transparency = 0
.Fill.Solid
.Size = 14
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Spacing = 0
.Strike = msoNoStrike
End With
ActiveChart.ChartArea.Select
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis)
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Magnitude"
Selection.Format.TextFrame2.TextRange.Characters.Text = "Magnitude"
With Selection.Format.TextFrame2.TextRange.Characters(1, 9).ParagraphFormat
.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With
With Selection.Format.TextFrame2.TextRange.Characters(1, 9).Font
.BaselineOffset = 0
.Bold = msoFalse
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(89, 89, 89)
.Fill.Transparency = 0
.Fill.Solid
.Size = 10
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Strike = msoNoStrike
End With
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.Left = 166.053
Selection.Top = 195.268
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Date/Time"
Selection.Format.TextFrame2.TextRange.Characters.Text = "Date/Time"
With Selection.Format.TextFrame2.TextRange.Characters(1, 9).ParagraphFormat
.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With
With Selection.Format.TextFrame2.TextRange.Characters(1, 9).Font
.BaselineOffset = 0
.Bold = msoFalse
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(89, 89, 89)
.Fill.Transparency = 0
.Fill.Solid
.Size = 10
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Strike = msoNoStrike
End With
End if
End if
ActiveChart.ChartArea.Select
End Sub`
Это вывод, который мне нужен