我需要创建一个图表,以显示不同人随着时间的推移。例如,没有标记的散点图显示某人可用的每个时间段的一个系列。每个人具有不同的Y值(例如,Joe = 1,Pat = 2,Kevin = 3)。目的是可视化时间为X轴的覆盖范围中的间隙。
我已经找到了如何通过...添加每个系列。
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = “=Sheet1!$A$1:$B$1”
ActiveChart.SeriesCollection(1).Values = “=Sheet1!$C$1:$D$1”
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = “=Sheet1!$A$2:$B$2”
ActiveChart.SeriesCollection(2).Values = “=Sheet1!$C$2:$D$2”
......依此类推,但该代码是通过手动分配X和Y值生成的。
我需要做的是:
1)根据工作表上的行数动态引入(在图表上绘制)所有X和Y值(行数不会总是相同),并且
2)以相同的方式格式化具有相同Y值的所有系列(例如,Y = 2的所有系列都是红线,而Y = 1的所有系列都是蓝线)。
我想我可以使用循环使用i进行迭代/行号,直到有一个空单元格,但我在这种情况下无法完成这项工作。
下一步是能够在同一图表上添加多个工作表中的数据。我找到了一些像这样的代码......
Dim ws As String
For Each ws in ThisWorkbook
是否会从所有工作表中获取数据?
我想发布一个我想要做的事情的例子,但显然我需要先代表。这是一个链接。唯一的区别是我希望同一行上的所有内容都是相同的颜色(即图例中图例中只有2个对象)。 http://i280.photobucket.com/albums/kk185/navytoolmanshortfieldbreak/Graph%20Problem%201_zpszxpsgikn.jpg
更新:如果您无法访问照片,则会有4行4列数据。每行包含一个应绘制为水平线的系列。前两列是X坐标,而后两列是Y坐标。第一行显示从1,1到3,1的行,第二行显示从5,1到7,1等等。
1 3 1 1
5 7 1 1
2 4 2 2
7 10 2 2
答案 0 :(得分:1)
1和2的答案)此代码将遍历您的数据,并按照您的描述进行绘制:
' Select Nothing so that Excel doesn't "help" by adding its own series
Range(Cells(ActiveSheet.UsedRange.Rows.Count + 1, ActiveSheet.UsedRange.Columns.Count + 1), _
Cells(ActiveSheet.UsedRange.Rows.Count + 2, ActiveSheet.UsedRange.Columns.Count + 2)).Select
ActiveSheet.Shapes.AddChart2(240, xlXYScatterLinesNoMarkers).Select
' Add all of the desired series.
Row = 1
While Cells(Row, 1).Value <> ""
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(Row).Name = "Series" & Row
ActiveChart.FullSeriesCollection(Row).XValues = "=Sheet1!$A$" & Row & ":$B$" & Row
ActiveChart.FullSeriesCollection(Row).Values = "=Sheet1!$C$" & Row & ":$D$" & Row
Row = Row + 1
Wend
作为非官方的答案3)此代码将遍历工作簿中的所有工作表:
Dim ws As Worksheet
For Each ws In ThisWorkbook
Next ws