0

我想为堆积条形图选择 .SetSourceData 的范围。

我的范围是不连续的。开始日期在 G 列中,其余数字在 V 到 AI 列中计算。

目前这只是绘制 V 列到 AI 的图表,它使用 G 列作为横轴标签。

我尝试将水平轴标签范围(E 列)添加为 Union 的第一个 .range 参数,但随后将 E 和 F 列(不确定 F 来自何处)显示为水平轴标签。G列无处可寻。

有没有办法用 SetSourceData 做到这一点,还是我必须为所有 15 个系列单独设置 SeriesCollection?

Sub Create_Chart()
'
' Create_Chart Macro
'
Dim ganttChart As ChartObject
Dim sourceRange As Range

With Sheets("Projects")
    Set sourceRange = Union(.Range("G1:G70"), .Range("V1:AI70"))
End With

Set ganttChart = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)

With ganttChart
With .Chart
    .ChartType = xlBarStacked
    .Legend.Delete
    .Parent.Width = 1224
    .Parent.Height = 828
    .SetSourceData Source:=sourceRange, PlotBy:=xlColumns
    .Location Where:=xlLocationAsNewSheet

    With .Axes(xlValue)
        '.MinimumScale = 41428
        '.MaximumScale = 41607
        .MajorUnit = 7
        .TickLabels.NumberFormat = "m/d"
        .TickLabels.Font.Size = 6
        .TickLabels.Font.Name = "Calibri"
    End With
    With .Axes(xlCategory)
        .ReversePlotOrder = True
        .TickLabelSpacing = 1
        .TickLabels.NumberFormat = "@"
        .TickLabels.Font.Size = 6
        .TickLabels.Font.Name = "Calibri"
    End With
End With
End With
End Sub
4

1 回答 1

1

您可以尝试在插入图表之前选择源范围。Excel 一开始可能会使用正确的范围,因此您无需定义源数据。

另一种方法是一次添加一个系列:

Set ganttChart = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)

' clean up first
' i declared as long
For i = 1 to ganttChart.SeriesCollection.Count
    ganttChart.SeriesCollection(1).Delete
Next

' rColumn declared as range
For Each rColumn In Sheets("Projects").Range("V1:AI70").Columns
    With ganttChart.NewSeries
        .Values = rColumn
        .XValues = Sheets("Projects").Range("G1:G70")
    End With
Next
于 2013-10-13T20:56:20.763 回答