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


 




沒有留言:

張貼留言

2季換一年

  112年合計 4.24 113.Q2比Q1成長9.6% Q1EPS為1.93,簡單白癡計算1.93*1.096=2.115 1.93+2.1=4.03 或是抓一樣也1.93 但不管是1.93*2=3.86或1.93+2.1=4.03,白話意思就是2季差不多相當於賺一個112全...