0

第一次海报。为了制作这个累积分布图,我制作了一个直线 xy 散点图。y 轴值是百分位数,所有这些值都在 A2:A100 中。相应的 x 值在 B 到 n 列中。n 是可变的,因为它取决于用户为创建图表指定了多少模拟策略。我需要 VBA 代码来创建一个 xy 散点图,其中 A2:A100 是位于相邻列中的所有 x 值系列的 y 值。一个命名单元,cumulativeColumns 计算具有 x 值的列数。基于我对 SeriesCollections 似乎如何工作的研究,我的第一个想法是使用 Do Until 循环,该循环将根据累积列公式的结果停止。我认为这段代码会起作用:

q = 1
Do Until q = Range("cumulativeColumns").Value
    ActiveChart.SeriesCollection(q).XValues = _
        "=Range(Cells(2,q+1), Cells(100,q+1))"
    ActiveChart.SeriesCollection(q).Values = _
        "=Range(Cells(2,1), Cells(100,1))"
    q = q + 1
Loop

第一次通过循环 q = 1,因此第一个系列将获得 Col B 数据。第二次通过循环 q = 2,所以我认为将定义第二个系列并获取 C 列中的数据,等等,直到根据累积列值的结果没有更多包含数据的列时它停止。但我收到错误 1004,应用程序定义或对象定义错误。

4

1 回答 1

0

测试:

q = 1

Do Until q = Range("cumulativeColumns").Value
    With ActiveChart.SeriesCollection.NewSeries
        .XValues = Range(Cells(2, q + 1), Cells(100, q + 1))
        .Values = Range(Cells(2, 1), Cells(100, 1))
        q = q + 1
    End With
Loop
于 2015-08-11T22:42:06.530 回答