Board logo

標題: 圖表的資料範圍設定 [打印本頁]

作者: hugh0620    時間: 2016-3-14 19:00     標題: 圖表的資料範圍設定

本帖最後由 hugh0620 於 2016-3-14 19:01 編輯

各位大大,請教一下:
       所需的圖表是有2個資料範圍,且這個資料的範圍會隨著需求資料會有變動,
       有參照過書籍及站內帖子,
       書籍的介紹是使用SetSourceData的語法來撰寫
       Ex.
            ActiveChart.SetSourceData Source:=ActiveSheet.Range("A2:D6"), PlotBy:=xlColumns
           看起來是針對單一的資料範圍設定,如果我有2個資料範圍的話,我該如何撰寫。
       也有利用錄製巨集的方式
       .SeriesCollection.NewSeries
       .FullSeriesCollection(1).Name = "=""循環時間"""
       .FullSeriesCollection(1).Values = "='LBF-B'!$L$22:$BJ$22"
       .SeriesCollection.NewSeries
       .FullSeriesCollection(2).Name = "=""平均時間"""
       .FullSeriesCollection(2).Values = "='LBF-B'!$L$98:$AW$98"
       這樣的寫法是一個固定資料範圍的方式,也不是很適合需求。

       請大大指點一下。
作者: stillfish00    時間: 2016-3-16 16:39

本帖最後由 stillfish00 於 2016-3-16 16:41 編輯

回復 1# hugh0620
建議附檔重新說明需求,你要的圖表資料範圍會如何變動?
作者: hugh0620    時間: 2016-3-19 09:40

本帖最後由 hugh0620 於 2016-3-19 09:41 編輯

感謝回覆,已經自行排除問題。

寫法如下

     .SeriesCollection.NewSeries
     .FullSeriesCollection(1).Name = "=""循環時間"""
     .FullSeriesCollection(1).Values = 工作表5.Range(Cells(22, 12), Cells(22, A + 8)) '"='LBF-B'!$L$22:$BJ$22"
     .SeriesCollection.NewSeries
     .FullSeriesCollection(2).Name = "=""平均時間"""
     .FullSeriesCollection(2).Values = 工作表5.Range(Cells(23, 12), Cells(23, A + 8)) '"='LBF-B'!$L$98:$AW$98"
作者: hugh0620    時間: 2016-3-28 19:12

本帖最後由 hugh0620 於 2016-3-28 19:13 編輯

Dear 大大
          還是同樣的問題,我的電腦是EXCEL 2013,執行上,沒有問題。
          在同事的電腦EXCEL 2007,就會產生下圖這樣的問題。
          求救大大,該如何修改。

[attach]23630[/attach]
  1.      '=====製作圖表中平均值=====
  2. '     With ActiveChart
  3. '     '========================================================
  4. '     .SeriesCollection.NewSeries
  5. '     .FullSeriesCollection(1).Name = "=""循環時間"""
  6. '     .FullSeriesCollection(1).Values = 工作表5.Range(Cells(22, 12), Cells(22, A + 8)) '"='LBF-B'!$L$22:$BJ$22"
  7. '     .SeriesCollection.NewSeries
  8. '     .FullSeriesCollection(2).Name = "=""平均時間"""
  9. '     .FullSeriesCollection(2).Values = 工作表5.Range(Cells(23, 12), Cells(23, A + 8)) '"='LBF-B'!$L$98:$AW$98"
  10. '     .FullSeriesCollection(1).ChartType = xlColumnClustered
  11. '     .FullSeriesCollection(1).AxisGroup = 1
  12. '     .FullSeriesCollection(2).ChartType = xlLine
  13. '     .FullSeriesCollection(2).AxisGroup = 1
  14. '      '==============================================================
  15. '
  16. '          '=====繪圖區設定====
  17. '          .SeriesCollection(1).HasDataLabels = True '隱藏格線
  18. '          .PlotArea.Height = 1000
  19. '          .PlotArea.Left = 15
  20. '          .PlotArea.Width = 15.5 + A * 16.5
  21. '          .PlotArea.Top = 15  '16.102
  22. '          '=====繪圖區設定====
  23. '
  24. '          .ChartWizard HasLegend:=False         '隱藏圖例
  25. '          .Axes(xlValue).MajorGridlines.Format.Line.Visible = msoFalse
  26. '          .ChartGroups(1).GapWidth = 50
  27. '          If 工作表5.Range("AF1") <> "" Or 工作表5.Range("AF1") > 10 Then
  28. '          .Axes(xlValue).MaximumScale = 工作表5.Range("AF1")   '圖表刻度最大值
  29. '          End If
  30. '          If 工作表5.Range("AM1") <> "" Or 工作表5.Range("AM1") > 10 Then
  31. '          .Axes(xlValue).MajorUnit = 工作表5.Range("AM1")       '圖表間距的刻度
  32. '          End If
  33. '     End With
複製代碼
d
作者: hugh0620    時間: 2016-3-29 14:00

本帖最後由 hugh0620 於 2016-3-29 14:02 編輯

回復 4# hugh0620

用2007版本錄製巨集,原來只要修改語法就好了

       FullSeriesCollection(1).Name = "=""循環時間"""

'     .FullSeriesCollection(1).Values = 工作表5.Range(Cells(22, 12), Cells(22, A + 8)) '"='LBF-B'!$L$22:$BJ$22"

'     .SeriesCollection.NewSeries

'     .FullSeriesCollection(2).Name = "=""平均時間"""

'     .FullSeriesCollection(2).Values = 工作表5.Range(Cells(23, 12), Cells(23, A + 8)) '"='LBF-B'!$L$98:$AW$98"

'     .FullSeriesCollection(1).ChartType = xlColumnClustered

'     .FullSeriesCollection(1).AxisGroup = 1

'     .FullSeriesCollection(2).ChartType = xlLine

'     .FullSeriesCollection(2).AxisGroup = 1


      修改後
     .SeriesCollection.NewSeries
     .SeriesCollection(1).Name = "=""循環時間"""
     .SeriesCollection(1).Values = 工作表5.Range(Cells(22, 12), Cells(22, A + 8)) '"='LBF-B'!$L$22:$BJ$22"
     .SeriesCollection.NewSeries
     .SeriesCollection(2).Name = "=""平均時間"""
     .SeriesCollection(2).Values = 工作表5.Range(Cells(23, 12), Cells(23, A + 8)) '"='LBF-B'!$L$98:$AW$98"
     .SeriesCollection(1).ChartType = xlColumnClustered
     .SeriesCollection(1).AxisGroup = 1
     .SeriesCollection(2).ChartType = xlLine
     .SeriesCollection(2).AxisGroup = 1




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)