从两个不同的工作簿中选择多个范围以制作一个完整的图形

时间:2016-06-09 08:59:23

标签: excel vba graph

Sub Macro1()    
 Macro1 Macro    
    Dim k_Month As Range
    Dim PrevYear As Range
    Dim CurrYear As Range
    Dim RelFC As Range
    Dim PropFC As Range

Set PropFC = Workbooks("ETKR_Sales_Tracking_MBR.xlsx").Worksheets("Year To Date").Range("C849:N849")
Set RelFC = Workbooks("ETKR_Sales_Tracking_MBR.xlsx").Worksheets("Year To Date").Range("C1061:N1061")

Set k_Month = Workbooks("Gap_Analysis.xlsx").Worksheets("SA2 KR").Range("U4:AF4")
Set PrevYear = Workbooks("Gap_Analysis.xlsx").Worksheets("SA2 KR").Range("AO6:AZ6")
Set CurrYear = Workbooks("Gap_Analysis.xlsx").Worksheets("SA2 KR").Range("U6:AF6")

ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select

With ActiveChart.SeriesCollection.NewSeries
    .Name = "Proposed Forecast"
    .Values = PropFC
    .XValues = k_Month
End With

With ActiveChart.SeriesCollection.NewSeries
    .Name = "Released Forecast"
    .Values = RelFC
    .XValues = k_Month
End With

With ActiveChart.SeriesCollection.NewSeries
    .Name = "Current Year"
    .Values = CurrYear
    .XValues = k_Month
End With

With ActiveChart.SeriesCollection.NewSeries
    .Name = "Previous Year"
    .Values = PrevYear
    .XValues = k_Month
End With    

    ActiveChart.SetSourceData Source:=Workbooks("Gap_Analysis.xlsx").Sheets( _
        "SA2 KR").Range("AO6:AZ6,U6:AF6,U4:AF4")

End Sub

正如你可以看到标题,我试图使用两个不同的excel文件中的多个范围来制作一个完整的图形。有4个范围,建议预测,发布预测,当前年份和上一年度。

当我将所有这些组合在一起并运行时,图表不会显示当前年份和上一年度数据,因为它们位于不同的Excel文件中,但仅显示建议的预测和已发布的预测。

我现在可以通过将year.file中的数据转换为forecast.file来解决此问题。但我不想这样做,因为这对我来说需要太多时间。请给我一个解决这个具有挑战性的VBA范围问题的指南

只是另一条评论:处理大数据时不要使用Excel。使用R或python是明智的,它比缓慢,愚蠢的excel更容易。

1 个答案:

答案 0 :(得分:0)

如果您不是直接引用外部范围,而是调整代码以在主文件的中央工作表中创建指向它们的链接,该怎么办?这样,图形仅引用主文件中的范围,并且在查看图形时,所有源数都在您面前 - 以及用户 - 以供参考。

要强调:您不会引入数据 - 只需使用VBA代码链接它。