我正在使用 Excel 2010。
我有一个 XY 散点图,按照我喜欢的方式构建和格式化。我多次重复使用此图表,因此我只需将图表复制并粘贴到包含我想要绘制的新数据的新工作表中即可。将图表粘贴到新工作表中后,我使用以下宏用新数据更新图表:
Sub DasyLabOilFDa()
Dim SeriesName As Range
Dim FirstSeriesValues As Range
Dim ElapsedTime As Range
'find cell addresses of elapsed time column
Range("C1").Select 'pick cell above the elapsed time column
Selection.End(xlDown).Select 'pick the elapsed time column header
ActiveCell.Offset(1, 0).Select 'selects first data value in Elapsed Time column
Set ElapsedTime = Range(Selection, Selection.End(xlDown)) 'set ElapsedTime variable to the range of data
'find cell addresses for FirstSeries in the top chart
Range("D1").Select 'pick cell above the first series column
Selection.End(xlDown).Select 'pick the first series column header
Set SeriesName = ActiveCell 'set SeriesName variable to the name of the data column's header
ActiveCell.Offset(1, 0).Select 'selects first data value in data column
Set FirstSeriesValues = Range(Selection, Selection.End(xlDown)) 'set FirstSeriesValues variable to the range of data
ActiveSheet.ChartObjects("TopFDa").Select
ActiveChart.SeriesCollection(1).Name = SeriesName
ActiveChart.SeriesCollection(1).Values = FirstSeriesValues
ActiveChart.SeriesCollection(1).XValues = ElapsedTime
End Sub
我正在绘制多个数据系列,但上面的代码足以展示如何获取宏以使用工作表的数据填充我粘贴在新工作表中的图表。
宏运行后,图表将正确命名图例中所示的系列名称(系列名称由数据列的标题确定)
问题是系列名称没有引用单元格地址。当我查看以编辑系列时,系列名称输入框是空白的。
我如何更改我的代码,以便生成的图表引用列标题的单元格地址作为系列名称?
答案1
我检查了我的 Excel 2007 副本中的《Excel 开发人员参考》,在 Series.Name 属性的文档中,它说明了这一点:
评论
您可以使用 R1C1 符号进行引用,例如“=Sheet1!R1C1”。
我已经测试过了并且对我有用:我将它设置为特定的单元格,当我更改该单元格中的文本时,系列标题会自动更新。
在你的情况下你应该使用
ActiveChart.SeriesCollection(1).Name = "='" & ActiveSheet.Name & "'!" & SeriesName.Address(,,xlR1C1)
答案2
@jakemcgregor 您的系列名称为空,因为您没有选择标题,所以默认情况下Excel
其系列名称为空。
为什么你的范围是这样的?你可以:
Dim rETime as Range
' Set your default Range
rETime = Range("C1").End(xlDown).Offset(1,0)
'' with this you don't need to do every time
Set ElapsedTime = Range(rETime, rETime.End(xlDown))
Set FirstSeriesValues = Range(rETime.Offset(0,1), _
rETime.Offset(0,1).End(xlDown))