Excel for 迴圈是開發自動化專案必學技巧,可用在重複執行計算或者處理大量資料,本文以1個取得多份財報爬蟲的範例,介紹如何搭配陣列變數的進階用法。
上節介紹如何取得一家公司單一季度的三大財報,實際上進行財務分析,不僅會結合不同財報或不同公司作垂直比較,也會橫跨多個期間作水平比較,像這種情況,必須先把這些財報都添加到資料庫中,以下分享具體作法:
一、想取得三家公司三個年度第四季度的財務報表,如下表所示,後面新增一個欄位「檔案名稱」。

二、編寫VBA程式碼:
70~90:和上一節第四步驟類似,這裡設計執行兩次「Application.InputBox」,用意是依序輸入「A欄位中的起始序號」和「A欄位中的結尾序號」。
110~190:依照前面所輸入的序號設計迴圈,依次根據清單序號上的公司代碼、年度、季度等資訊,定義VBA程式裡的變數。
210~400:和上一節相同設定數列變數,接著利用集合迴圈取得財報。
420~500:定義變數「N」為想要儲存的檔案名稱,先將此名稱寫入Excel工作表「Files」的清單中第六欄,也就是「F」欄,同時也將此檔案名稱與電腦資料夾路徑結合,然後把前面從網頁所取得三個財報工作表移動到新活頁簿,將新活頁簿儲存在設定好的「Route」路徑名稱並關閉,最後再迴圈執行下一個「i」。

三、執行巨集程式,首先是輸入儲存格參照視窗,第一次是「A2」、第二次是「A9」,意思是想一次取得1到9個財報檔案,清單中的F欄本來保留空白,於程式執行後會自動填上已儲存的檔案名稱。

四、成功依照清單指示新增九個檔案,這裡要留意一點,如果是選擇1到9,上一節留下來的第一個檔案最好刪除,不然程式可能不知該怎麼處理現有相同檔案而中斷報錯,本來一般程式會設計自動偵錯及處理機制,這裡簡便起見並沒有特別考慮這一點。

五、建立資料庫之後,再來是編寫取得資料庫的程式,這裡程式雖多,用法概念前面章節都有介紹過了,其中一個新的開啟活頁簿:「Workbooks.Open Filename:=Route」,對於讀完這本書的程式功力基礎而言,應該已是不難理解。

六、執行巨集「Open_FR」,在出來的「請選擇財報檔案」視窗選擇第一個檔案,在目前活頁簿中先增一張工作表,將檔案中的三張工作表一起複製到這個新增的工作表,得到同一公司同一年度的資產負債表、損益表、現金流量表。


七、每個年度的報表會包含前比較,因此利用14年度和16年度的財務報表,可以簡單進行跨四個年度的財務分析。

一般提到大數據,指的巨量無法以傳統方式處理的資料,這些資料並不是突然間出現,而是電子數據日積月累起來的。對於個人而言,同樣可以生活或工作中所需要的資料,利用Excel儲存起來,日積月累便是專屬於個人的大數據資料庫,視情況拿出來加以分析。以財務報表為例,雖然可以野心很大,精心設計VBA迴圈將所有公開公司的財報一次下載,但是這麼一來,顯然超乎Excel本身預設的計算能力,而且沒有實質的分析效益,還是比較建議用比較自然的方式,像這一節的範例,一次又一次地累積,建立自己特有的資料分析庫。