【发布时间】:2017-09-15 18:30:39
【问题描述】:
我有一个 VBA 电子表格,允许用户添加另一个电子表格的内容、对其进行格式化、计算总计和添加饼图。它大部分工作正常,除了当我们想要一个饼图中的所有数据点时,有一个月份选项卡为每个数据点创建一个系列。
这是创建饼图的函数。
Sub AddChart(CurrentWorkSheet As Worksheet)
Dim FirstRow As Integer
Dim LastRow As Integer
Dim FirstColumn As String
Dim LastColumn As String
Dim DataRange As Range
Dim i As Integer
FirstRow = RowCount(CurrentWorkSheet) + 2
LastRow = FirstRow + 4
Set DataRange = CurrentWorkSheet.Range("I" & FirstRow & ":I" & LastRow)
Dim MyChart As Chart
Set MyChart = CurrentWorkSheet.Shapes.AddChart(xlPie).Chart
MyChart.SetSourceData Source:=DataRange
MyChart.SeriesCollection(1).HasDataLabels = True
For i = 1 To MyChart.SeriesCollection(1).Points.Count
If i = 1 Then
MyChart.SeriesCollection(1).Points(i).Interior.Color = RGB(0, 176, 80)
ElseIf i = 2 Then
MyChart.SeriesCollection(1).Points(i).Interior.Color = RGB(255, 0, 0)
ElseIf i = 3 Then
MyChart.SeriesCollection(1).Points(i).Interior.Color = RGB(112, 48, 160)
ElseIf i = 4 Then
MyChart.SeriesCollection(1).Points(i).Interior.Color = RGB(0, 0, 0)
MyChart.SeriesCollection(1).Points(i).DataLabel.Font.Color = RGB(255, 255, 255)
ElseIf i = 5 Then
MyChart.SeriesCollection(1).Points(i).Interior.Color = RGB(0, 112, 192)
Else
End If
Next
MyChart.SeriesCollection(1).XValues = CurrentWorkSheet.Range("H" & CStr(FirstRow) & ":H" & CStr(LastRow))
End Sub
在此工作簿中有一个YTD 工作表和每个月的工作表。到了四月,馅饼只有一种颜色。其他月份都很好。
数据集如下:
ATTACHMENT 962.31
DAMAGE 3,279.94
MODIFICATIONS 451.00
REPAIRS 5,239.78
TIRES 1,979.04
数据范围是第 51-55 行。
=SERIES(,'Apr 2014'!$H$51:$H$55,'Apr 2014'!$I$51,1)
当我在 Excel 中查看系列时,列出了 5 个,第一个是 ATTACHMENT,最后 4 个是 1。每个月都使用相同的功能以及YTD 选项卡,除了四月,它们都可以。
任何想法可能导致它?
【问题讨论】:
-
我猜布局有些不同,但您可能只需要添加 PlotBy 参数
MyChart.SetSourceData Source:=DataRange, PlotBy:=xlColumns或使用xlRows(如果合适)。