Excel | 三個指令輕鬆完成excel爬蟲實作,以工研院產業學院課程網頁為例

Excel | 三個指令輕鬆完成excel爬蟲實作,以工研院產業學院課程網頁為例

千里始於足下,一步一步跟著做,真的去實作,才能弄懂,別怕失敗。
註:函式不懂的地方,可以上網搜尋並實作,會讓你更了解。



Reference


  1. 用 Excel自動擷取網頁資料(上)
  2. Excel-查詢指定字串所在的儲存格位址(MATCH,ADDRESS,IFERROR)


策略篇連結

此篇為實作篇,至於為何要使用INDIRECT、ADDRESS、MATCH這三個指令,請參閱此篇<Excel | 用三個指令,思考爬蟲邏輯演算法(以工研院產業學院課程網頁為例)>



動機

某天到公司上班時,公司前輩對黑修斯說:「看一看工研院的課程,如果有興趣的,可以選擇一些課程去進修。」
動機:抓出需要的資訊,稟報老闆課程選擇的利弊關係。
身為一個工程師,面對龐大的資訊,立刻使用Excel做資料分析,彙整一些想要的資料,終於完成了一小部分的爬蟲實作,考慮到未來可能不常用Excel做簡單爬蟲,就先記錄在部落格,以備不時之需,也能幫助需要的朋友。

大腦是用來思考的,記憶的事情交給記事本

四個流程完成爬蟲

實作的流程攻略如下:

  1. 找到想要的資訊網頁
  2. Excel擷取
  3. Excel資料處理
  4. 資料呈現



1.找到想要的資訊網頁如下圖

網址:https://college.itri.org.tw/SeminarView2.aspx?posno=4F67E786-9DB9-40A3-B495-6D6D9008425D




2.Excel擷取

透過Excel取得網站資料,先到 資料 -> 從web



把網頁輸入地址 -> 點到 -> 匯入


出現正在下載的視窗。


匯入資料,點第一格(A1)的位置。


出現如下圖訊息,等待資料擷取。


成功匯入,如下圖所示,擷取的動作完成。



3.Excel資料處理

藉由INDIRECT、ADDRESS、MATCH三個函數,達成資料的處理,
簡單說明邏輯:

  1. 利用MATCH()+ADDRESS()找到需要的資訊位置。
  2. 再利用INDIRECT()傳回需要的資訊。

實驗函數如何使用時,一團亂的試算表格。黑修斯的習慣是先熟悉一下函數的使用方法,再進行組合。


MATCH()函數
藉由MATCH()搜尋儲存格範圍中的指定項目,並顯示排列數,如下圖所示:
目標值:香蕉
搜尋範圍:A2:A23
香蕉排序在第5個,可以看到黑色框號為5


實際實作如下,找到需要的資訊。


ADDRESS()函數
藉由ADDRESS()取得工作表中儲存格的位址。
列的位置:放上先前實作的MATCH(),可以得到5,
行的位置:1。(代表第一行A)
輸出表示方式:4。(代表傳回相對位置,可看下圖二)
輸出結果為 A5
圖一

圖二

小陷阱

由上文中的MATCH()函數,取得資料位置值為5,代表在第五列(A5),而實際實作發現需要的值不在A5,因為設定的搜尋不是從頭開始,而是由A2:A6的範圍去搜尋,所以得資料位置值5,實際上是在A6的位置,如下圖所示。


實際應用說明:

透過MATCH()搜尋需要的課程日期,是在112的位置


將MATCH()放入ADDRESS()函式中,將得到A112


不過需將數值+1,取得A113位置的資料,才是正確的,由下圖所示。




INDIRECT()函數
INDIRECT()的使用:傳回參考位置的值,利用輸入A113,傳回A113的值。
實際用法如下:



4.資料呈現

再將資料排序成想要呈現樣式即可。


轉貼本文時,需註明來自黑修斯隨手札記原創作者 hughes chen(黑修斯),及附上原文連結,同時 禁止修改,禁止商業使用 。

張貼留言

0 留言