The Unreasonable Effectiveness of Excel Macros

Matthias Endler

Excel 宏不可思议的强大效用

我一直不太喜欢实习,一部分原因是所有令人兴奋的公司都离我在巴伐利亚的小村庄很远,另一部分原因则是我太害羞,不敢申请。

我只有一次申请过实习,那是学校项目安排的爱尔兰实习。老师负责分配岗位,所以我的朋友去了 Apple,而我则被安排到一家中型 IT 分销商——姑且称他们为 PcGo。

从网站上看,这家公司相当气派,但现实中,它不过是位于科克一片多雨工业区里的偏僻灰色仓库。我到达后,被介绍给同事 Evgeny(叶夫根尼)。他是负责组装台式电脑的主要员工,也是唯一的员工。就我所知,他基本上就是这家店的老板。他只会说蹩脚的英语,于是递给我一把电动螺丝刀和一盒螺丝,我便开始干活。第一周,我们一起组装了很多电脑,玩得也很开心。有一天,我因为错过公交车,他开车送我回家。那天下着雨,他开车穿过科克狭窄的街道时,我们一边聊天一边大笑,但突然我听到一声巨响。我从后视镜里看去,却发现后视镜已经没了。原来他撞上了另一辆车,后视镜被撞掉了。叶夫根尼毫不在意。他用浓重的东欧口音说:“这已经是我弄丢的第三块后视镜了。”然后继续开车。

第二周,我的老板来看我。显然,他们原本为三周实习安排的工作量,我已经做完了。我之前就习惯了组装和安装电脑,这也就解释得通了。

为了让我有事可做,他们又安排了一个任务。他在后面一台老旧的 Windows 98 电脑上,把浏览器指向 silverpages.ie,搜索“computer”,过了一会儿,我们看到了一份无穷无尽的地址列表,里面是爱尔兰各家“与电脑有关的”公司。每条记录都包含一些预想中的字段:公司名称、地址、电话号码、网站(如果有的话)以及关键词列表。

老板说,他们需要一份所有竞争供应商的概览。他从一条记录中小心地选中一个字段,将其复制并粘贴到 Excel 表格中。剩下的字段也如法炮制。“好了!”他说,脸上挂着虚假的笑容。我们都知道,这意味着我要无聊地干上两周。

他们想让我手动抓取整个网站数据库,好让自己有事可做。

我本可以把这当成一种侮辱,但我反而把它看成了一个挑战。

我注意到,silverpages.ie 上的页码可以通过一个 GET 参数控制。

“我能不能写个程序来进行 scraping(网页抓取)?”老板明显有些困惑。“呃……你想做什么都可以,但不许安装任何额外软件!”说完,他就走了。

从已安装的程序来看,我没什么选择:Excel 或扫雷。我知道 Excel 的 Visual Basic 宏相当强大,但不确定它能不能抓取整个网站。

过了一会儿,我发现了一个可以将网站下载到 Excel 工作表中的功能(多么辉煌的功能啊)。它运行得非常完美,所以我只需要录制一个宏,让它为每个页面创建一个临时工作表,把所有重要字段复制到一张“主表”中,然后删除临时工作表即可。我录下宏后查看了代码。那天剩下的时间,我都在琢磨如何在循环中修改 URL,以及清理这个宏。我按下“运行宏”按钮,然后坐在那里等待。电脑全速运转着。我最担心的是程序崩溃,或者电脑内存耗尽。我没有在上面玩扫雷,所以大多数时候我都在打台球,或者和叶夫根尼聊天。

第二天早上来到办公室时,我的程序已经完成了。出乎我意料的是,它抓取了整个 SilverPages,而列表中有成千上万条记录。我通过电子邮件把文档发给老板,然后又回去玩扫雷。

一小时后,三个穿西装的人站在我身后。我不得不再次向他们展示那份列表。他们不敢相信这是我独自完成的,于是我又给他们看了抓取数据的工具。对他们来说,我简直拥有某种超能力。

他们没有再给我安排任务就离开了;剩下的两周里,我想做什么都行。于是我继续为他们编写了一个库存管理工具,他们也可以通过 Excel 来管理它。那其实只是一个很漂亮的 Excel 表单,背后对应的是他们一直手动维护的电子表格。我花了两周暑假才完成这个工具,因为他们说会付我钱——当然,他们没付 :)。

经验教训

  • 永远不要低估 Excel 宏的力量。
  • 如果手头有一项无聊的任务,就通过增加限制条件让它变得更有挑战性。

原文由 Matthias Endler 发布

本文章由 openai/gpt-5.6-luna 进行翻译