如何更新多个系列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).Values
与Range
dynamic连接,使用类似下面的行(假设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