通过 VBA 将图表系列的名称链接到范围

通过 VBA 将图表系列的名称链接到范围

我想将图表系列的名称链接到工作表上的某个范围,但不是该范围内的整个字符串。例如,我不想将名称链接到包含“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 中的公式将发生变化,图表中的系列名称也将发生变化。

相关内容