2023年9月2日 星期六

vba:圖表資料更新 周末小磨練一下

        小編這幾天想,一直自動畫圖好像還缺了啥,所以思索了一下,圖都在那了不如變成更新圖的資料的做法,補足這塊的不足,再者效率比重新生成物件來的更快,然後圖的格式也不用重新設定了。

小編目前掌有兩種方式可以更新圖面資料,

第一種:

透過  Formula 方式丟入資料組所在位置,來更新資料。

此種方法簡單不複雜。

例如要更新圖表3的第一條線的資料,資料來源在工作表1上的j2:j203,資料x軸標籤在f2:f203上,可以這樣寫,vba如下 msdn

ActiveSheet.ChartObjects("圖表9").Activate

 ActiveChart.FullSeriesCollection(1).Formula = "=SERIES(,'工作表1'!$J$2:$J$203,'工作表1'!$F$2:$F$203,2)"

圖1.執行後圖表設定 

第一種加強版:

接下去看來看看,如果今天學會了set的技巧,我們可以這樣做:

'透過set 設置使用的儲存格範圍

Set myrange_y = ActiveSheet.Range("f2:f203")

Set myrange_x = ActiveSheet.Range("j2:j203")

'透過SetSourceData 設置使用的儲存格範圍

ActiveSheet.ChartObjects("圖表 9").Chart.SetSourceData Source:=myrange_y

'x軸標籤透過Chart.SeriesCollection(1).XValues設置使用的儲存格範圍

ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).XValues = myrange_x

圖2.執行後圖表設定

第二種:MSDN

直接丟資料組"資料"給圖形物件,來更新資料,很簡單,拿掉set 即可,語法相當單一

如下:

myrange_y = ActiveSheet.Range("f2:f20")

myrange_x = ActiveSheet.Range("j2:j20")

ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).XValues = myrange_x

ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).Values = myrange_y

圖2.圖表資料
說明:點選excel上的輸入函數的地方,會發現資料呈現跟前敘方式不同。


 




沒有留言:

張貼留言

我的雷達:20260304 突破海峽!!!

  2號指標也亮燈,就衝!!!!! 更新:20260307 過一段時間了,才敢貼交易明細 哈,因為跟外資持股對答案 2026/3/9 訊號再次出現(數字衝高到1617),就買買買買買買 但我還是豬頭買了台達化