Создание диаграммы Visual Basi c - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь создать гистограмму в VBA, которая будет отображать процентное изменение за указанный c месяц. Данные также должны быть рассчитаны в макросе. Например, энергетические ряды показывают март-февраль / февраль, а не только данные за месяц.

Как бы я go сделал это? Я вставил изображение того, что я хотел бы видеть на дисплее.

Я ценю любую помощь. Спасибо!

данные:

enter image description here

что я хотел бы отобразить код VBA:

enter image description here

Sub chart()
Dim i As Integer
Dim chart As ChartObject
With ActiveSheet.ChartObjects.Add _
(Left:=90, Width:=375, Top:=75, Height:=225)
.chart.SetSourceData Source:=Sheets("sheet1").Range("B2:D2", "B5:D5")
.chart.HasTitle = True
.chart.ChartTitle.Text = "1-month percent change for X month"
.chart.ChartType = xlBarClustered
.chart.HasLegend = False
End With
End Sub

1 Ответ

0 голосов
/ 30 января 2020

Поместите рассчитанные проценты в массив и используйте свойство series.collection (1) .values ​​.

Sub chart()

    Dim i As Integer
    Dim chart As ChartObject
    Dim rng2 As Range
    Set rng2 = Range("C5:E5")

    ' calculate percent
    Dim cell As Range, pcent() As Single, prev As Single, curr As Single
    ReDim pcent(rng2.Count - 1)

    For Each cell In rng2
        curr = CSng(cell)
        prev = CSng(cell.Offset(-1, 0))
        pcent(i) = (curr - prev) / prev
        i = i + 1
    Next

    With ActiveSheet.ChartObjects.Add _
(Left:=90, Width:=375, Top:=100, Height:=225).chart
        .SetSourceData Source:=Sheets("sheet1").Range("B2:E2,B5:E5")
        .HasTitle = True
        .ChartTitle.Text = "1-month percent change for " &   ActiveSheet.Range("B5").Value
        .ChartType = xlBarClustered
        .HasLegend = False
        .SeriesCollection(1).Values = pcent
        .Axes(xlValue, xlPrimary).TickLabels.NumberFormat = "0.00%"
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...