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上的輸入函數的地方,會發現資料呈現跟前敘方式不同。


 




沒有留言:

張貼留言

指數變化(2024.05.17)

指數變化(2024.05.17) 上周焦點:         5/9當周焦點                          事實:fed與非農就業,引起投資市場對降息有加速,但肯定的是,fed說不加息了。                        美國密西根大學信心指數 ...