造个系统做金融 006 Excel困局:宏的初次尝试

();

夜色沉得发暗,书桌上的台灯泛着昏黄的光。陈帆的手指在键盘上停了几秒,又重新敲下最后一个数字。屏幕里,Excel表格的最后一行数据终于填满。他往后靠了靠,脊背贴着木椅,眼睛盯着那列密密麻麻的价格记录,一动不动。

三周的数据,全被他一个数字一个数字地输进了这台老电脑。纸页翻得起了毛边,剪报按日期码在抽屉角落,每一笔都来自清晨六点校门口的第一份《中国证券报》。现在它们变成了电子表格里的字符,整齐排列,像一支等待检阅的队伍。

可他知道,这些数字不一定准。

三天前操场上的粉笔线还在他脑子里晃着。王浩塞过来的五百块钱压在书包夹层,没人知道那张纸条背后的代价——手绘K线时差了0.1元,收盘价标低了一格,误差率2%。这点偏差在操场上没人看得出,在系统里却是致命的裂痕。

他双击打开Excel,新建一个工作表,把原始数据复制过去。鼠标移到“工具”菜单,点了“宏”,输入名称“CheckPrice”。光标闪在代码框里,他开始敲:

If Abs(Cells(i, 3) - Cells(i, 4)) > 0.1 Then

Cells(i, 5).Value = "ERROR"

这是他第一次写VBA宏。语法是从一本旧书上抄来的,变量名是现编的,循环结构试了三次才对。他记得书上说,这种校验能自动扫出开盘价和收盘价之间异常波动的数据点。只要运行一次,一百条记录就能筛完。

他按下F5。

程序卡住两秒,弹出提示:**内存不足,无法完成操作。**

陈帆盯着那行字,手指顿了一下。机器发出轻微的嗡鸣,硬盘灯狂闪,风扇转得越来越急。他试着关掉其他窗口,只留Excel,再点运行。屏幕闪白,整个程序直接退出。

他试了第三次。

这次连提示都没出,电脑直接僵住,键盘无响应。他长按电源键强制关机,等重启进系统,Excel打开文件时跳出警告:“部分格式可能丢失。”

他没说话,重新登录,再次载入数据表。

窗外传来脚步声,由远及近,停在他房门外。

“还没吃饭?”母亲的声音隔着门板传进来,“电脑玩太久对眼睛不好。”

“就快好了。”他应了一句,声音压得很平。

“九点半了,明天还要上学。”

“我知道,马上。”

外面静了几秒,脚步声退去。他松了口气,继续盯着屏幕。

宏跑不了,只能换办法。

他翻出抽屉里的《Excel实用技巧》,找到“条件格式”那一章。设定规则:如果某行收盘价与前一日差值超过0.1元,单元格自动标红。一条条加进去,每设完一行就手动测试一遍。速度慢,但至少不会崩。

一百零七条数据,他设了两个小时。

当最后一行颜色随数值变化而跳出来时,他靠回椅子,额头渗出一层薄汗。屏幕上,三处红色格外刺眼。他翻出原始剪报一一核对,果然,有两条是他在画图时记错了小数点位置,另一条是报纸印刷模糊导致录入偏差。

问题找到了。

他新建一个文档,准备把修正后的数据另存为备份。在“另存为”对话框里,手指敲下文件名:stock_data_19983。

刚按回车,他忽然意识到不对。

少了个零。

正确应该是“199803”,他输成了“19983”。

想改,却发现文件已经生成。他试着关闭再打开,Excel弹窗提示:“文件格式不受支持,或已损坏。”

他点重试,再点取消,最后直接删除文件,重新保存。

这一次,他一字一顿地核对:s-t-o-c-k-_-d-a-t-a-_-1-9-9-8-0-3。

点击保存,进度条走到一半,电脑风扇突然提速,屏幕闪烁了一下。

等他再打开文件夹,双击新文件,Excel加载到一半,窗口骤然关闭。

他又试了一次。

同样的过程,同样的结果。

第三次,他换路径存到D盘,依旧打不开。右键查看属性,文件大小显示为0KB。

三周的数据,一百多次手动录入,两次校验尝试,全没了。

他坐在那里,手指搭在键盘边缘,没有抬起来。屏幕黑着,映出他模糊的脸。房间里只剩主机低沉的运转声。

门外又响起了脚步声。

母亲推开门缝,端着一碗面进来。“吃点东西吧,别熬太晚。”

她把碗放在桌角,瞥了眼显示器。“怎么关了?修好了吗?”

“嗯。”他说。

“那赶紧吃,凉了伤胃。”

她转身要走,又停下,“你爸那台旧电脑本来就带不动什么,要不跟学校老师说说,用用机房?”

“再说吧。”他低头,筷子挑起面条,没怎么动。

她看了他一眼,轻轻带上门。

屋里恢复安静。

他放下碗,重新开机。桌面图标一个个浮现,他打开回收站,想找找有没有残留文件。没有。再进临时文件夹,清空记录里也没发现相关缓存。

他打开写字板,新建文档,写下:

stock_data_199803.xlsx

创建时间:1998年3月27日 21:14

路径:C:\My Documents\

备注:含3月1日至3月24日陆家嘴股价,共107条,经条件格式初筛,修正3处错误

写完,他打印了一份,折好塞进抽屉最里面。然后取出一张空白软盘——其实是录音带改装的存储盘,标签纸上写着“数学作业备份”——**驱动器。

虽然不能写入大文件,但他还是点开Excel,手动复制前十条数据,粘成纯文本存进一个小文档,命名为“math_hw_03.txt”,拖进软盘。

进度条缓慢爬行,读写灯不断闪烁。

就在文件即将完成的瞬间,软驱发出“咔”的一声轻响,接着红灯常亮。

他拔出软盘,换另一台设备读取,提示“磁道错误,无法访问”。

他没再试。

把软盘放进笔筒,和几支秃头的钢笔并排立着。

第二天清晨,他早早起床,把昨夜打印的文件放进书包夹层。出门前站在镜子前看了两秒,拎起背包下楼。

路上经过报刊亭,他买了当天的《中国证券报》。翻开股市版,陆家嘴收盘价印在第三行:**8.23元**。

他盯着那串数字看了一会儿,折好报纸,夹在腋下,加快脚步往学校走去。

教室还没开门,走廊空荡。他掏出钥匙打开门锁,走到自己座位,从书包取出硬皮文件夹,翻到最新一页,用红笔在昨日预估值旁画了一条竖线。

上方写了一个词:**验证**。

他合上本子,目光落在桌面一角。那里有一小片纸屑,边缘参差,像是从什么东西上撕下来的。他没碰它,只是静静看着。

早自习铃响前两分钟,林悦走进教室。她路过陈帆座位时,看见他正低头翻一本练习册,手指轻轻摩挲着书页边缘。

她没说什么,坐回自己的位置。

陈帆抬起眼,望向讲台方向。黑板还空着,昨天被撕下的纸条原位一片干净。他收回视线,从抽屉拿出一张新的白纸,铺在桌面上。

拿起钢笔,蘸了墨水。

笔尖悬在纸上,迟迟未落。