【发布时间】:2015-07-30 04:33:21
【问题描述】:
我需要创建一个图表来显示不同人在一段时间内的报道。例如,一个没有标记的散点图显示一个系列,每个时间段都有人可用。每个人都有不同的 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
【问题讨论】:
标签: vba excel dynamic charts series