我有一个程序会提示用户打开文件并从文件数据中生成折线图。该系列将绘制在同一图表上。将有两个命令按钮:一个用于用户选择文件;另一个用于生成图表。每次单击图表的命令按钮时,系统将根据新打开的文件数据添加。
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
但是,我需要对系列行进行分组,即同一文件中的行由相同颜色表示。
答案 0 :(得分:0)
以下是一些可以帮助您的详细代码:
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