Excel VBA组图表系列颜色
问题描述:
我有一个程序,它会提示用户打开文件并从文件数据生成折线图。该系列将被绘制在同一张图表上。将会有两个命令按钮:一个供用户选择文件;另一个用于生成图表。每次单击图表的命令按钮时,系列将根据新打开的文件数据添加。Excel VBA组图表系列颜色
With ThisWorkbook.cht
For a = 1 To lastRow
' Add each series
Set chtSeries = .SeriesCollection.NewSeries
With chtSeries
.Values = rng
.XValues = Worksheets(sheet).Range(Worksheets(sheet).Cells(a, 1), Worksheets(sheet).Cells(a, 10))
End With
Next a
End With
但是,我需要对系列行进行分组,由此来自同一文件的行由相同颜色表示。
答
下面是一些详细的代码,应该可以帮助您:
Sub Graph()
Dim Gr As Chart
Set Gr = ActiveWorkbook.Charts.Add
With Gr
'Whole data source
.SetSourceData Source:=Range(Sheets(Src_Name).Cells(2, 1), Sheets(Src_Name).Cells(20, 5)), PlotBy:=xlRows
'Graph type
.ChartType = xlXYScatterSmooth
'Place
.Location Where:=xlLocationAsNewSheet, Name:=NewSheetName
'Title
.HasTitle = True
.ChartTitle.Characters.Text = "Chart Title"
For a = 1 To 20
'Data Series 1
.SeriesCollection.NewSeries
.SeriesCollection(a).Values = Range(Sheets(Src_Name).Cells(2, 2), Sheets(Src_Name).Cells(20, 5)) 'change with a
.SeriesCollection(a).XValues = Range(Sheets(Src_Name).Cells(2, 1), Sheets(Src_Name).Cells(20, 1)) 'not changing I think
.SeriesCollection(a).AxisGroup = 1
.SeriesCollection(a).Name = "MTTF"
'.SeriesCollection(i).Format.Line.Weight = 1
'.SeriesCollection(i).Format.Line.ForeColor.RGB = RGB(int1 as integer, int1 as integer, int3 as integer) ' for a row/line
'.SeriesCollection(i).Format.Fill.ForeColor.RGB = RGB(int1 as integer, int1 as integer, int3 as integer)
Next a
'Axis parameters
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Age"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Hours"
.PlotArea.Interior.ColorIndex = 2
.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
.ChartArea.Font.Size = 14
.Deselect
End With
'Legend positioning
With ActiveChart.Legend
.Left = 350
.Top = 75
End With
'Drawing area positiong
With ActiveChart.PlotArea
.Width = 550
.Height = 350
End With
'Clean memory
Set Gr = Nothing
End Sub
+0
它有帮助吗?你还需要别的吗? – R3uK
+0
该系列将以不同的颜色。我需要打开多个文件并将它们绘制在一张图表中。为了区分文件数据,我需要每个文件的系列线颜色相同。例如,“文件1”中的线条颜色显示为红色,而另一文件中的系列线条颜色显示为黄色。 –
你或许应该只调用“设置chtSeries = .SeriesCollection.NewSeries”第一次,隔日一次,使用引用同一系列。同一系列中的数据点将具有相同的颜色。 –
我使用循环来连续创建一个新的系列,因为每个文件中会有多个系列。对于每一行数据,都会有一个新的系列。 –