Excel 巨集不可思議的高效威力
我向來不太喜歡實習,一部分是因為所有令人興奮的公司都離我在巴伐利亞的小村莊很遠,另一部分則是因為我太害羞而不敢去申請。
只有一次,我透過學校的計畫申請了在愛爾蘭的實習。老師負責分配工作,結果我的朋友分到了 Apple,我則被分到一家中型的 IT 經銷商——姑且稱它為 PcGo 吧。
從網站上看,這家公司看起來相當氣派,但實際上,它只是坐落在科克陰雨綿綿的工業區裡一間偏僻、灰濛濛的倉庫。抵達後,我被介紹給同事 Evgeny(葉夫根尼),他是負責組裝桌上型電腦的主要(也是唯一)員工。就我看來,整間店都是他在打理。他的英語說得不太流利,所以他直接遞給我一把電動螺絲起子和一盒螺絲,我就開始上工了。第一週我們一起組裝了許多電腦,過程也十分愉快。有一天因為我錯過了公車,他開車載我回家。那是個雨天,當他開車穿梭在科克狹窄的街道上時,我們有說有笑,但突然間我聽到一聲巨響。我往後照鏡一看,才發現後照鏡已經不見了。原來他撞到了另一輛車,後照鏡就這樣掉了。葉夫根尼不以為意,用濃厚的東歐口音說道:「已經弄掉三個後照鏡了。」然後繼續開車。
到了第二週,老闆來找我。顯然,我已經完成了他們為我這為期三週的實習所安排的工作量。我本來就習慣組裝和安裝電腦,這也解釋了為什麼會這麼快。
為了讓我有事可做,他們另外想了一個任務。在後面一台老舊的 Windows 98 電腦上,他把瀏覽器導向 silverpages.ie,搜尋「computer」,過了一會兒,我們看到一長串愛爾蘭公司的地址清單,這些公司都「和電腦有點關係」。每一筆資料都包含預期的欄位:公司名稱、地址、電話號碼、網站(如有的話)以及一串關鍵字。
老闆說他們需要一份所有競爭廠商的總覽。他從一筆資料中仔細地選取一個欄位,複製後貼到 Excel 試算表中。接著他對剩下的欄位也如法炮製。「就是這樣!」他帶著假笑說道。我們兩人心裡都清楚,這對我來說將意味著兩個無聊的星期。
他們想讓我靠手動爬取整個網路資料庫來打發時間。
我大可以把這當成一種羞辱,但我反而將它視為一項挑戰。
我注意到 silverpages.ie 上的頁碼可以透過一個 GET 參數來控制。
「我可以寫個程式來自動爬取嗎?」老闆顯得有些困惑。「呃……你想做什麼都可以,但不准安裝任何額外的軟體!」說完他就走了。
看看電腦上已安裝的程式,我沒什麼選擇:只有 Excel 或 Minesweeper。我知道 Excel 的 Visual Basic 巨集相當強大,但不確定能不能用它來爬取整個網站。
過了一會兒,我發現有個能把網站下載到 Excel 試算表中的功能(真是個了不起的功能)。這個功能運作得非常完美,所以我只需要錄製一個巨集,為每一頁建立一個暫時的試算表,把所有重要欄位複製到「master slide」中,然後再刪除暫時的試算表。我錄製了巨集並查看了程式碼。剩下的時間都花在研究如何在迴圈中修改 URL 並整理巨集上。我按下了「run macro」按鈕,然後就坐在那裡等候。電腦全速運轉著。我最擔心的是程式會當掉,或是電腦會記憶體不足。我忍住沒在那台電腦上玩 Minesweeper,所以大部分時間都在打撞球或和葉夫根尼聊天。
隔天早上我到辦公室時,我的程式已經跑完了。令我驚訝的是,它把 SilverPages 上的資料全部爬了下來,清單中有好幾千筆資料。我透過電子郵件把文件寄給老闆,然後就回去玩 Minesweeper 了。
一小時後,有三個穿著西裝的人站在我身後。我得再把那份清單展示給他們看。他們不敢相信這是我一個人完成的,所以我向他們展示了用來爬取資料的工具。對他們而言,我彷彿擁有某種超能力。
他們離開時沒有再交代別的任務;剩下的兩個星期我想做什麼都可以。接著我為他們寫了一個庫存工具,他們也可以透過 Excel 來管理。那其實只是一個華麗的 Excel 表單,用來處理他們原本手動維護的試算表。我花了暑假的兩個星期把那個工具完成,因為他們說會為此付我薪水,當然,最後並沒有付 :)。
學到的教訓
- 永遠不要低估 Excel 巨集的威力。
- 如果手邊有無聊的任務,試著透過增加限制條件讓它變得更有挑戰性。
隨機一篇部落格