看板 Accounting 關於我們 聯絡資訊
Excel如何取得多期損益報表 網誌圖文版: http://www.b88104069.com/archives/4313 上一節利用「按一下以選取這個表格」的功能,取得網頁某一個特定的表格資料,這一 節先介紹如何以VBA方式完成相同任務。同時也運用上一章迴圈設計的概念,進一步批次 取得多個年度的財務報表,因為如此取得的內容,會有重覆資料的問題,所以最後再利用 複製貼上的程式碼,自動將資料整理成符合需要的格式。 一、首先要知道所需的表格在整個網頁的次序。有三個方法,第一是直接看網頁,但有時 不太確定哪些是表格屬性;第二是上一節在取得網頁資料時,透過Excel仔細數看看所選 取表格屬於第幾個;第三是最正式的,直接在Chrome瀏覽器滑鼠右鍵「檢查網頁原始碼」 ,再用Find指令將表格找出來,如圖所示。 二、編寫VBA程式碼如下,「QueryTables」的方法前面章節介紹很多,於此不贅述。這裡 較為特別的屬性是「.WebSelectionType = xlSpecifiedTables」,表示選取特定的表格 ,「.WebTables = "3"」指選取整個網頁中的第三個表格。 三、執行結果如圖所示,只下載損益表的部份。(同樣以2002中鋼為例) 四、設置迴圈,以Year作為迴圈變數,因為2013年上市櫃公司開始採用IFRS,2012以前並 無資料,變數值設定為從2013到2016。然後和本書其他章節範例相同,引用WebAddress、 DesCell作網址變數及儲存格參照變數,最後將工作表的欄寛統一為15:「 Columns().ColumnWidth = 15」。 五、執行巨集「IncomeStatements」,成功一次下載三個年度的損益表,然而損益表項目 欄和前一年度資料會有重覆。 六、為解決重覆問題,另外編寫整理格式的程式碼。 Cells.UnMerge 為方便複製,首先將工作表所有儲存格取消合併。 Cells(1,1).EntireColumn.Copy Sheets("七").Cells(1,1).EntireColumn 第一欄為損益表項目欄,只會複製一次,單獨處理,這裡程式碼用意是將目前工作表第一 欄,整欄複製到工作表「七」的第一欄。 For i = 1 To 4 Cells(1, 2 + 3 *(i - 1)).EntireColumn.Copy Sheets("七").Cells(1,2 + (i - 1)).EntireColumn Sheets("七").Cells(1, i + 1).Value = 2012 + i Next i 設置迴圈,以i=1為例,將原工作表第二欄,複製到工作表「七」的第二欄,接著於工作 表「七」儲存格(1,B)輸入2013(2012+1),讀者有興趣可自行預想當i=2、3、4時,程式 會如何執行,便能理解這裡程式設計的用意。 Sheets("七").Select Columns().ColumnWidth= 12: Columns("A").ColumnWidth = 18 設置工作表「七」的格式,先將所有欄寛定為12,再單獨將A欄的欄寛定為18,Select類 似於滑鼠右鍵的動作,表示以工作表「七」作為目前工作表,「:」並無程式意義,只是 單純將兩行程式碼合併於一行。 七、執行結果,非常完美! 這一節等於是將前四章所累積的程式功力,一次展現在取得公開財報的實務案例上。從這 個範例可以看出,單單「QueryTables」這一招就很好用了,但不同網站的結構不同,在 屬性設置必須跟著變化,另外「QueryTables」也有個先天性的限制,它在取得網頁比較 沒有針對性,篩選機制是表格,這個範例剛好可以利用表格選取所需要的內容,但即便如 此,下載的資料仍然再經過一番刪減複製,所幸Excel在這方面原本就非常強大,即便不 寫VBA程式,如果資料量不大,純Excel手工整理也不會太麻煩。 本文內容取自《人人做得到的網路資料整理術》,博客來書店網址: http://www.books.com.tw/products/0010775391。 延伸閱讀: Excel如何取得公開發行公司財務報表 http://www.b88104069.com/archives/4312 Excel如何閱讀網站新聞財經頭條 http://www.b88104069.com/archives/4139 TibaMe | 會計人的Excel小教室:高效率工作心法! https://www.tibame.com/offline/excel_accountant -- 周末,我們繼續Excel:精華區=>21.心得=>5.其他=>3.office 會計人的Excel小教室: https://www.facebook.com/acctexcel -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.20.97.153 ※ 文章網址: https://www.ptt.cc/bbs/Accounting/M.1528603683.A.58D.html