如何更新多个系列graphics的值或范围?

我有一个电子表格,有几个图表。 我将其他3张图表的数据存放在图表中。 我试图,迄今没有成功,更新图表,以涵盖额外的数据,因为我添加它。

我已经尝试了几个基于我在网上看到的东西。 我试过设置一个范围

Set SourceRange1 = Split(Join((GetArray(Sheets(1).Range("P6:" & GetLetterFromNumber(Sheets(1).Cells(6, Sheets(1).Columns.Count).End(xlToLeft).Column) & "6"))), "|"), "|") Set SourceRange2 = GetArray(Sheets(2).Range("P6:" & GetLetterFromNumber(Sheets(2).Cells(6, Sheets(2).Columns.Count).End(xlToLeft).Column) & "6"))) Set SourceRange3 = Application.Union(Worksheets(3).Range("P5", Sheets(3).Cells(5, Sheets(1).Columns.Count).End(xlToLeft)), Sheets(3).Range("P6", Sheets(3).Cells(6, Sheets(3).Columns.Count).End(xlToLeft))).Value 

然后像这样分配给图表:

 ActiveChart.SeriesCollection(1).Values = SourceRange1 ActiveChart.SeriesCollection(2).Values = SourceRange2 ActiveChart.SeriesCollection(3).Values = SourceRange3 

这给我的范围P5:x5目前,但它不设置图表系列。

仅供参考, GetArray是我创build的一个函数:

 Function GetArray(Range1 As Range) Dim Test() As String, cell As Range, i As Integer i = 0 ReDim Test(0) For Each cell In Range1 ReDim Preserve Test(i) Test(i) = cell.Value i = i + 1 Next cell GetArray = Test End Function 

所以它的GetLetterFromNumber:

 Function GetLetterFromNumber(Number) GetLetterFromNumber = Split(Cells(1, Number).Address(True, False), "$")(0) End Function 

通过像Set SourceRange1这样的当前设置,我得到了一个

编译错误:不能分配给数组

我也遇到了同样的错误。 我有SourceRange1-3安装像Dim SourceRange1()

如果我把它们设置成Dim SourceRange1那么我得到:

运行时错误“13”:

types不匹配在所有三个。

如果我直接指定SeriesCollection

 ActiveChart.SeriesCollection(1).Values = GetArray(Sheets(1).Range("P6:" & GetLetterFromNumber(Sheets(1).Cells(6, Sheets(1).Columns.Count).End(xlToLeft).Column) & "6")) ActiveChart.SeriesCollection(2).Values = GetArray(Sheets(2).Range("P6:" & GetLetterFromNumber(Sheets(2).Cells(6, Sheets(2).Columns.Count).End(xlToLeft).Column) & "6")) ActiveChart.SeriesCollection(3).Values = GetArray(Sheets(3).Range("P6:" & GetLetterFromNumber(Sheets(3).Cells(6, Sheets(3).Columns.Count).End(xlToLeft).Column) & "6")) 

当它为SeriesCollection(1)时,它将所有的值赋值为0:

 (20,30,40,50,60,10,20,30,40) 

我确定我错过了一些简单的东西,我只是不知道是什么。 如果我错过了在我的描述中的东西,让我知道,我可以添加它。

否则,我可以得到的所有帮助将不胜感激。

为了使Chart.SeriesCollection(1).ValuesRangedynamic连接,使用类似下面的行(假设SourceRange1范围被定义为correclty):

 ActiveChart.SeriesCollection(1).Values = "=" & SourceRange1.Address(True, True, xlA1, xlExternal) 

在使用图表时,您也可以考虑使用:

 Dim Cht as Chart Dim Ser as Series Set Cht = ActiveChart Set Ser = Cht.SeriesCollection(1) With Ser .Values = "=" & SourceRange1.Address(True, True, xlA1, xlExternal) End With