2015-05-18 33 views
0

我需要创建一个图表来显示不同人员随时间的覆盖范围。例如,没有标记的散点图在每个时间段内显示一个人将可用的一个系列。每个人都有不同的Y值(例如Joe = 1,Pat = 2,Kevin = 3)。目的是在时间是X轴的情况下可视化覆盖范围中的空白。使用相同的Y值创建多个系列的图表

我已经找到了如何通过增加每个系列...

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的所有系列都是蓝线)。

我在想,我可以使用循环使用我的迭代/行号,直到有一个空的单元格,但我一直无法在这种情况下做的工作。

下一步是能够在同一个图表上添加来自多个工作表的数据。我发现一些代码就像这样...

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 

回答

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 
+0

编辑以显示数据的采样。实际的数据更加复杂,但用这些简单的数字解决问题将使我得到我需要去的地方。谢谢Bobby。 – ShortFieldBreak

相关问题