[心得] Excel如何取得多期損益報表

作者: moodyblue   2018-06-10 12:06:29
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
作者: tyr230367981 (tyr)   2018-06-10 12:39:00
作者: margtch   2018-06-10 12:52:00
實用推
作者: peter0612   2018-06-10 13:05:00
優質
作者: yayaxuan (宣)   2018-06-10 13:14:00
實用! 謝謝
作者: violin37 (en)   2018-06-10 13:39:00
感謝
作者: airwaves0612 (改變是為了更好)   2018-06-10 13:44:00
好難
作者: rangting (rangting)   2018-06-10 14:24:00
作者: loadperson   2018-06-10 15:21:00
推推
作者: hwujialuen (松原拓)   2018-06-11 08:03:00

Links booklink

Contact Us: admin [ a t ] ucptt.com