【问题标题】:Creating a Visual Basic chart创建 Visual Basic 图表
【发布时间】:2020-05-15 03:57:50
【问题描述】:

我正在尝试在 VBA 中创建一个条形图,以显示特定月份的百分比变化。数据还需要在宏中计算。例如,能源系列显示 3 月至 2 月/2 月的数据,而不仅仅是一个月的数据。

我该怎么做呢?我插入了我希望显示的图像。

感谢您的帮助。谢谢!

数据:

我希望 vba 代码显示的内容:

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    将计算出的百分比放入一个数组并使用series.collection(1).values property

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多