Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何为堆叠条形图选择.SetSourceData的范围?_Excel_Vba_Charts - Fatal编程技术网

Excel 如何为堆叠条形图选择.SetSourceData的范围?

Excel 如何为堆叠条形图选择.SetSourceData的范围?,excel,vba,charts,Excel,Vba,Charts,我想为堆叠条形图的.SetSourceData选择范围 我的射程是不连续的。开始日期在G列,其余数字在V列到AI列中计算 目前,这只是绘制V列到AI列的图表,它使用G列作为水平轴标签 我尝试将横轴标签范围(列E)作为第一个.range参数添加到Union,但它随后将列E&F(不确定F来自何处)显示为横轴标签。没有找到G列 是否有办法使用SetSourceData执行此操作,或者我必须为所有15个系列单独设置SeriesCollection Sub Create_Chart() ' ' Creat

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

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

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

我尝试将横轴标签范围(列E)作为第一个.range参数添加到Union,但它随后将列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

您可以在插入图表之前尝试选择源区域。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