excel - 创建 Visual Basic 图表
问题描述
我正在尝试在 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
解决方案
将计算的百分比放入数组并使用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
推荐阅读
- flutter - 发送以下 http 获取请求时出现错误。我使用颤振 2.5
- javascript - 使用本机数据类型将表单输入自动编码为 JSON
- node.js - 当数据存在时,Prisma 查询返回 null
- android - 如何在 Jetpack Compose 中切换嵌套导航图?
- google-sheets - 在 Google 表格上,如何根据共同的 id 匹配在两张表格之间关联一个值?
- font-awesome - Fontawesome 图标无法显示
- pine-script - 系列数据在 Tradingview 中绘制前一天 OHLC 信息时出现延迟
- javascript - 如何在 Javascript 代码中显示 Laravel 从数据库中检索到的结果
- angular - 从 Objservable 对象数组 Angular 返回 observable 对象:
- javascript - 关于 vs 代码制表位