您好,我有一个小问题,可以将数据添加到现有图表中。
现在我有一个工作表,其中包含工作表第2行中多年的月份数据系列。所以月份是例如B2 1.2017,C2 2.2017,并且在3,4,5,6,7和8行中总是存在该月的数据。
现在我只想让我的宏将新月加上下面行的数据添加到现有图表中。
到目前为止,我的代码是:<div id="wrapper">
<div id="col-1">
RANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXTRANDOMTEXT
</div>
<div id="col-2"></div>
</div>
现在这只会创建新的数据系列,但实际上没有新的数据添加到图表中。
答案 0 :(得分:2)
下面的代码可能看起来有点长,但它是向数据库添加新Series
到现有图表的最安全的方法。
我设置了所有必要的Objects
,因此代码将为&#34;安全防范&#34;可以。
<强>代码强>
Option Explicit
Sub AddSeriestoChart()
Dim ws As Worksheet
Dim ChtRng As Range
Dim ChtObj As ChartObject
Dim Ser As Series
' set the Worksheet object
Set ws = ThisWorkbook.Worksheets("Summary")
' Set the Chart Object
Set ChtObj = ws.ChartObjects("Chart")
' Set the Range of the Chart's source data
Set ChtRng = ws.Range("B2:B8")
With ChtObj
' add a new series to chart
Set Ser = .Chart.SeriesCollection.NewSeries
' set the source data of the new series
Ser.Values = "=" & ChtRng.Address(False, False, xlA1, xlExternal)
End With
End Sub
修改1 :要修改现有的Series
数据,请使用以下代码:
With ChtObj
For i = 1 To .Chart.SeriesCollection.Count
Set Ser = .Chart.SeriesCollection(i)
' set the source data of the new series
Set ChtRng = ws.Range("B" & i + 2)
Ser.Values = "=" & ChtRng.Address(False, False, xlA1, xlExternal)
Set ChtRng = Nothing
Next i
End With
答案 1 :(得分:0)
这就是我要用的东西
wsMetric.ChartObjects("Chart").Chart
'This one will link data from another workbook
.SeriesCollection(1).Values = "='[" & wb.Name & "]" & ws.Name & "'!$" & sCol & "$" & lRow & ":$" & sCol2 & "$" & lRow2
'Debug.Print "='[" & wb.Name & "]" & ws.Name & "'!$" & sCol & "$" & lRow & ":$" & sCol2 & "$" & lRow2 'Returns ='[Book1.xlsm]Sheet1'!$A$1:$A$11
'This one will link data from the same workbook, same or different sheet
.SeriesCollection(1).Values = "=" & ws.Name & "!$" & sCol & "$" & lRow & ":$" & sCol2 & "$" & lRow 2
'Debug.print "=" & ActiveSheet.Name & "!$" & scol & "$" & lrow & ":$" & scol2 & "$" & lrow2 'Returns =Sheet1!$A$1:$A$11
End With
这不使用.Activate
并直接访问图表