我正在尝试使用VBA自动生成动态XY散点图。我的数据是每次试验的12个单独数据集,试验次数会有所不同。首先通过扫描csv文件以找到最后一组数据,并通过删除标签的第一行,我将其除以12以确定可用的集合数量,然后将数据填充到具有相应数据点的图形中。系列名称。我已经完成了大部分代码,但是我在包含系列名称的范围数据时遇到了一些语法问题。系列名称仅在我选择列而不是列数据列时才有效。
如何修改我的代码以将多列输入作为我的系列名称?
Sub PlotSelect()
Dim myChart As Chart
DataRow = 1
SelectRow = 2
With ActiveSheet
'To count the number of rows to determine number of sets of data
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Row = LastRow - 1
N = Row / 12
'Creating a dummy chart before repopulating the data points
Range("A1:B2").Select
Set myChart = ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmooth).Chart
' delete all the dummy series
For i = myChart.SeriesCollection.Count To 1 Step -1
myChart.SeriesCollection(i).Delete
Next
'Populating chart with data
Do While DataRow <= N
If DataRow <> -1 Then
myChart.SeriesCollection.NewSeries
myChart.SeriesCollection(DataRow).Name = Range(ActiveSheet.Cells(SelectRow, 2), ActiveSheet.Cells(SelectRow, 5))
myChart.SeriesCollection(DataRow).Values = Range(ActiveSheet.Cells(SelectRow, 9), ActiveSheet.Cells(SelectRow + 11, 9))
myChart.SeriesCollection(DataRow).XValues = Range(ActiveSheet.Cells(SelectRow, 8), ActiveSheet.Cells(SelectRow + 11, 8))
End If
DataRow = DataRow + 1
SelectRow = SelectRow + 12
Loop
End Sub
答案 0 :(得分:0)
我不是使用一系列单元格来生成数据条目的名称,而是合并单元格中的数据并将内容复制到另一个单元格中,然后选择具有连接单元格的新单元格。后来我删除了临时单元格。
Do While DataRow <= 2
If DataRow <> -1 Then
myChart.SeriesCollection.NewSeries 'To add new data entries
**Range("B9999").Select
ActiveCell.FormulaR1C1 = ((Cells(SelectRow, 4)) & "_" & (Cells(SelectRow, 5)) & "_" & (Cells(SelectRow, 6)))
myChart.FullSeriesCollection(DataRow).Name = Range("B9999")**
myChart.SeriesCollection(DataRow).Values = Range(Cells(SelectRow, 2), ActiveSheet.Cells(SelectRow + 600, 2))
myChart.SeriesCollection(DataRow).XValues = Range(Cells(SelectRow, 1), ActiveSheet.Cells(SelectRow + 600, 1))
End If
DataRow = DataRow + 1
SelectRow = SelectRow + 601
Loop
Range("B9999").Delete 'to delete temp data
ActiveWindow.ScrollRow = 2 'to reset spreadsheet view
修改位于**范围