Как создать al oop для SetSourceData на линейном графике - PullRequest
0 голосов
/ 17 января 2020

Я создаю модель в стиле Монте-Карло для прогнозирования спроса для моей компании. Модель запускается столько раз, сколько пользователь запрашивает (должна быть динамическая c) и отправляет обратно, сколько «партий» мы можем ожидать произвести за определенный год. Я хочу построить результаты.

Я хочу включить одну диаграмму в симуляцию на графике. Тем не менее, количество симуляций будет меняться в зависимости от ввода пользователя с другой вкладки, которая называется «Панель управления».

Я пытался создать al oop, который будет динамически «SetSourceData», но я был безуспешными. Ошибка кода ниже. Буду признателен за любые советы о том, как выбрать несмежные строки таким образом. Желаемый результат:
Desired Output

1 Ответ

1 голос
/ 18 января 2020

Вы не можете использовать SetSourceData в пошаговом режиме - он устанавливает ввод для всего графика. что-то вроде этого, где вы добавляете каждую серию отдельно, было бы лучше / более гибким:

Sub AddAChart()

    Dim co As ChartObject, cht As Chart, NumberSimulations As Long, i As Long
    Dim wsData As Worksheet

    Set wsData = ThisWorkbook.Worksheets("Batches")

    'add a new chart and clear any data which might have been added to it
    '  (eg if cells were selected when it was added)
    Set co = ThisWorkbook.Worksheets("Charts").ChartObjects.Add(100, 100, 300, 300)
    Set cht = co.Chart
    Do While cht.SeriesCollection.Count > 0
        cht.SeriesCollection(1).Delete
    Loop
    cht.ChartType = xlLineMarkers

    NumberSimulations = ThisWorkbook.Sheets("Control Panel").Cells(28, 3)

    For i = 1 To NumberSimulations
        'add this series
        With cht.SeriesCollection.NewSeries
            .XValues = wsData.Range("C1:V1")
            .Values = wsData.Range("C1:V1").Offset(1 + ((i - 1) * 7))
        End With
    Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...