我试图按照本教程进行操作:
http://www.homeandlearn.org/vba_charts_sheets.html
据我所知:
Sub MakeChart()
Dim ChartSheet1 As Chart
Set ChartSheet1 = Charts.Add
With ChartSheet1
.SetSourceData Source:=Sheets("clc_hgn_hgn").Range("C3:AO41")
End With
End Sub
问题是Excel会自动假定列和行标题位于数据源中,而在我的工作表中则不是。如何让Excel从不同范围中检索标题?
例如,在我的工作表中,数据包含在C3:AO41范围内,但水平顶部标题位于C1:AO1中,垂直左侧标题位于A3:A41中。
答案 0 :(得分:3)
如果系列名称和X轴标签不是数据集的列/行标题,则无法使用SetSourceData
方法。相反,您需要单独添加每个系列并添加指定X轴(类别)标签的命令。
为每个系列做一些事情
ActiveChart.FullSeriesCollection(1).Name = "=Sheet5!$A$3"
ActiveChart.FullSeriesCollection(1).Values = "=Sheet5!$C$3:$F$3"
对于X轴类别类似
ActiveChart.FullSeriesCollection(1).XValues = "=Sheet5!$C$1:$F$1"
修改以适合您的对象名称并根据需要包装在WITH语句中。
答案 1 :(得分:0)
Sub MakeChart()
Dim rData As Range
Dim ChartSheet1 As Chart
With Sheets("clc_hgn_hgn")
Set rData = Union(.Range("A1"), .Range("C1:AO1"), _
.Range("A3:A41"), .Range("C3:AO41"))
End With
Set ChartSheet1 = Charts.Add
With ChartSheet1
.SetSourceData Source:=rData
End With
End Sub