Excel 巨集不合理的威力
原文由 Matthias Endler 于 發布,訂閱此部落格
我向來不太喜歡實習,一部分是因為所有讓人興奮的公司都離我在巴伐利亞的小村莊太遠,另一部分則是因為我太害羞,不敢去申請。
只有一次,我透過學校的計畫申請了到愛爾蘭的實習。老師負責分配工作,結果我朋友被分到 Apple,而我則被分到一間中型的 IT 經銷商——就叫它 PcGo 吧。
從網站上看,這家公司看起來相當氣派,但實際上,它只是科克多雨的工業區裡一間偏僻、灰濛濛的倉庫。剛到那裡時,我被介紹給同事 Evgeny,他是負責組裝桌上型電腦的主要(而且是唯一的)員工。就我觀察來看,整間店都是他在顧。他的英文不太流利,所以直接遞給我一支電動螺絲起子和一盒螺絲,我就開始上工了。第一週我們一起組裝了很多台電腦,過程也滿愉快的。有一天因為我錯過公車,他開車載我回家。那是個下雨天,我們一邊開過科克狹窄的街道一邊有說有笑,突然間我聽到砰的一聲巨響。我往後照鏡一看,才發現後照鏡已經不見了。原來他撞到了另一輛車,把後照鏡給撞掉了。Evgeny 倒是一點也不在意,用濃厚的東歐口音說了一句:「已經掉過三個後照鏡了。」然後繼續往前開。
到了第二週,老闆來找我。顯然,我已經做完了他們原本為我這三週實習排好的工作量。我本來就很習慣組裝和安裝電腦,難怪會這麼快。
為了讓我有事做,他們又想了一個新任務。在後面那台老舊的 Windows 98 電腦上,他把瀏覽器開到 silverpages.ie,搜尋了「computer」,過了一會兒,我們面前就出現一長串愛爾蘭公司的地址清單,全都是跟「電腦」有點關係的公司。每一筆資料都包含那些預期的欄位:公司名稱、地址、電話號碼、網站(如果有的話)以及一串關鍵字。
老闆說他們需要一份所有競爭廠商的總表。他從其中一筆資料裡小心翼翼地選取一個欄位,複製後貼到 Excel 工作表裡。剩下的欄位他也如法炮製。「就是這樣!」他假笑著說。我們心裡都很清楚,這代表接下來的兩週對我來說會無聊透頂。
他們想用讓我手動爬完整個網路資料庫的方式來打發我的時間。
我大可以把這當成一種羞辱,但我反而把它看作一個挑戰。
我注意到 silverpages.ie 上的頁碼可以用一個 GET 參數來控制。
「我可以寫個程式來自動爬資料嗎?」老闆明顯一臉困惑。「呃……你想做什麼都可以,但你不能安裝任何額外的軟體!」說完他就走了。
看看電腦上已安裝的程式,我其實沒什麼選擇:不是 Excel 就是踩地雷。我知道 Excel 的 Visual Basic 巨集非常強大,但不確定能不能用它來爬完整個網站。
過了一陣子,我發現有個可以把網頁下載到 Excel 工作表裡的功能(真是個了不起的功能)。這招完全可行,所以我接下來要做的,就是錄製一個巨集,讓它為每一頁建立一張暫存工作表,把所有重要欄位複製到一張「總表」裡,然後再把暫存工作表刪掉。我錄好巨集後看了看程式碼。剩下的一整天,我都在研究怎麼用迴圈去修改 URL,並把巨集整理乾淨。我按下「執行巨集」的按鈕,然後就坐在那裡等。電腦全速運轉著。我最擔心的是程式會當掉,或是電腦的記憶體會耗盡。我忍住沒在那台電腦上玩踩地雷,所以大部分時間都在打撞球或跟 Evgeny 聊天。
隔天早上我進辦公室時,程式已經跑完了。出乎我意料,它把整個 SilverPages 都爬了下來,清單裡有好幾千筆資料。我透過 E-Mail 把文件寄給老闆,然後就回去玩踩地雷了。
一小時後,三個穿著西裝的人站在我身後。我得把那份清單再秀給他們看一次。他們不敢相信這是我一個人做到的,所以我把爬資料的工具展示給他們看。對他們來說,我簡直像是有超能力一樣。
他們什麼也沒再交代就離開了;剩下的兩週,我想做什麼都可以。接著我又幫他們寫了一個庫存管理工具,同樣可以用 Excel 來操作。其實就只是一個做得很漂亮的 Excel 表單,套在他們原本手動維護的試算表上。我花了暑假的兩週時間把那個工具完成,因為他們說會付我錢——當然,最後根本沒付 :)。
學到的教訓
- 永遠不要低估 Excel 巨集的威力。
- 如果手邊有無聊的工作,試著加上一些限制,讓它變得更有挑戰性。
隨機一篇部落格
留言
登入後參與討論