我正在尝试制作 VBA 中的累积分布图

I'm trying to make a cumulative distribution chart in VBA

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

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 列等中获取数据,直到根据 cumulativeColumns.Value 的结果没有更多包含数据的列时它停止。但是我收到错误 1004,应用程序定义或对象定义错误。

已测试:

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