2017-02-23 83 views
2

我正在使用VBA生成圖表。VBA更新圖表的源數據

用下面的代碼我可以選擇從列號11數據到最後一列,這是我存儲在LastColumnNumber變量:

ActiveChart.SetSourceData Source:=Union(Sheets(SheetName).Range(Cells(1, 11), Cells(1, LastColumnNumber)), Sheets(SheetName).Range(Cells(4, 11), Cells(4, LastColumnNumber)))

因爲我之前和之後有很多零個值的我實際需要在圖表中顯示的數據我使用以下方法找出第一個和最後一個非零單元的地址: https://stackoverflow.com/a/42413582/2012740

如何更新第一段代碼從相關答案中實施解決方案,並相應縮小圖表的範圍?

回答

2

我已經mananged用以下方法:

Dim StartPoint1, StartPoint2, EndPoint1, EndPoint2 As String 

StartPoint1 = Application.Evaluate("=ADDRESS(1,MATCH(TRUE,4:4<>0,0))") 
EndPoint1 = Application.Evaluate("=ADDRESS(1,MAX((4:4>0)*COLUMN(4:4)))") 

StartPoint2 = Application.Evaluate("=ADDRESS(4,MATCH(TRUE,4:4<>0,0))") 
EndPoint2 = Application.Evaluate("=ADDRESS(4,MAX((4:4>0)*COLUMN(4:4)))") 

和圖表源已經成爲:

ActiveChart.SetSourceData Source:=Union(Sheets(SheetName).Range(StartPoint1 & ":" & EndPoint1), Sheets(SheetName).Range(StartPoint2 & ":" & EndPoint2)) 

希望它可以幫助別人!乾杯!