我想将图表系列的名称链接到工作表上的某个范围,但不是该范围内的整个字符串。例如,我不想将名称链接到包含“201601”的单元格,而是希望系列名称为 2016。我尝试在分配名称时使用 Left(cell,4),但它给出了错误。
当前 VBA 代码
Sub changeLinks()
For i = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(i).Chart.SeriesCollection(1).Name = "=Left(" & Range("P18").Address(, , , True) & ",4)"
ActiveSheet.ChartObjects(i).Chart.SeriesCollection(2).Name = "=Left(" & Range("I18").Address(, , , True) & ",4)"
ActiveSheet.ChartObjects(i).Chart.SeriesCollection(3).Name = "=Left(" & Range("B18").Address(, , , True) & ",4)"
Next i
End Sub
我怎样才能更改我的代码来实现这一点?
答案1
当您调用时SeriesCollection.Name
,Excel 正在更新SERIES()
定义系列的函数。SERIES()
不能接受函数作为参数。它只能接受范围、命名范围或字符串参数。
您需要分两步完成此操作,如下所示:
Sub changeLinks()
Dim i&
Dim name1$, name2$, name3$
name1 = Left(Range("P18").Value, 4)
name2 = Left(Range("I18").Value, 4)
name3 = Left(Range("B18").Value, 4)
For i = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(i).Chart.SeriesCollection(1).Name = name1
ActiveSheet.ChartObjects(i).Chart.SeriesCollection(2).Name = name2
ActiveSheet.ChartObjects(i).Chart.SeriesCollection(3).Name = name3
Next i
End Sub
答案2
您需要将公式放入另一个单元格。例如,在 P17 中输入此公式:
=LEFT(P18,4)
然后使用 P17 作为包含系列名称的范围(在选择数据对话框中)。当 P18 发生变化时,P17 中的公式将发生变化,图表中的系列名称也将发生变化。