公開資訊觀測站現金流量表並不是正規的TABLE表格,即使使用EXCEL WEB查詢,資料仍會無法正確顯示。
原先想利用IMPORTXML()去提取裡面有用的資訊,不知為何,嘗試多次均失敗,可是部分網站又可以(例如http://www.marketwatch.com/),有傳聞GOOGLE試算表改為新版後就發生這個問題了。不管如何,山不轉路轉,我使用另外一個方式來提取資料
首先,要善用瀏覽器的插件來分析網頁(小弟我是用 firefox 的 httpfox),找到所需文件正確位置,本例是提取股票代號6184大豐電100年第四季的現金流量表資料,正確位置是
http://mops.twse.com.tw/mops/web/ajax_t05st36?firstin=1&off=1&keyword4=&code1=&TYPEK2=&checkbtn=&queryName=co_id&TYPEK=all&isnew=false&co_id=6184&year=100&season=04
單純使用IMPORTXML()抓到的資料長相如下
(資料亂碼應是編碼問題,小弟仍無法解決)
看似很整齊的資料單純利用SPLIT卻被分割的七零八亂,原因是換行及空白代號的問題,這個資料如果貼到WORD裡頭去觀看(要到選項設定裡打開顯示字元符號及空白),會看到換行符號為向下的箭頭
這個換行符號的代碼是CHAR(10),裡頭看不見的空格代碼是CHAR(32)
完整語法請參考
=transpose(split(IMPORTHTML("http://mops.twse.com.tw/mops/web/ajax_t05st36?firstin=1&off=1&keyword4=&code1=&TYPEK2=&checkbtn=&queryName=co_id&TYPEK=all&isnew=false&co_id=6184&year=100&season=04","table",5),char(10)))
因為我只是要提取部分資訊,所以我使用QUERY()來查詢資料(中文字雖然是亂碼,但是有對應,所以可以當搜尋KEY。注意,這種亂碼使用Vlookup是無法正確搜尋的)
以本例來說,我要查詢的是"營業活動之淨現金流入(流出)"的數據,所以搜尋KEY對應的亂碼就是 çæ¥æ´»åä¹æ·¨ç¾éæµå
¥(æµåº)
=QUERY(B1:B300,"select * where B like '%çæ¥æ´»åä¹æ·¨ç¾éæµå
¥(æµåº)%'")
取出的資料仍然放在同一格,再利用SPLIT分離一次
如果只要100年度的數值,可配合使用 index()
=index(split(QUERY(B1:B300,"select * where B like '%çæ¥æ´»åä¹æ·¨ç¾éæµå
¥(æµåº)%'"),char(32)),1,2)
99年度數值==index(split(QUERY(B1:B300,"select * where B like '%çæ¥æ´»åä¹æ·¨ç¾éæµå
¥(æµåº)%'"),char(32)),1,3)