用户发现了让Excel计算出错的“完美公式”

每逢周五,The Register都会带来新一期的On Call专栏——一个由读者投稿、分享技术支持故事的栏目。

本期主角是一位我们姑且称为"阿尔伯特"的读者,他讲述了自己在一家法国大型咨询公司驻英格兰北部分支机构工作时的经历。

"我是一名软件工程师,主要负责支持各类Oracle ERP系统集成工作,"阿尔伯特告诉On Call专栏,并解释说,其中一项集成任务是将Oracle薪资系统中的数据导入Excel电子表格。

这套集成方案已稳定运行了一年有余,直到有一天,一张紧急支持工单突然出现在阿尔伯特的任务队列中:表格中用于计算员工可计费工时的公式,莫名其妙地开始产生错误结果,偏差幅度约为三分之一——他直觉这个比例意味深长。

阿尔伯特打开用户提供的文件,很快确认计算结果确实有误。他判断是集成环节出了问题,于是着手展开排查。

"我花了好几个小时逐一检查数据库中冗长的PL/SQL函数,却完全找不到逻辑层面的问题,"他说,"更令人困惑的是,我自己生成的文件显示的时间数据完全正确。"

随后他找到提交工单的用户沟通,这才发现对方并没有使用标准版电子表格。

"我们输出的文件是按照对方规格生成的,要求可计费时间以分钟为单位表示,"阿尔伯特解释道,"但那位用户觉得这个数字'太大了',于是自作主张地将数值除以100,想把单位换算成小时。"

原来,用户曾私自修改过电子表格,以得到自己想要的数字。

"我不得不向这位用户解释:要将可计费时间从分钟换算为小时,应该除以60,而不是100,"阿尔伯特回忆道。这就是数据偏差约三分之一的症结所在!

你是否也曾向用户讲解过基础数学知识?欢迎将你的故事发送至On Call投稿邮箱,与更多读者分享。

Q&A

Q1:阿尔伯特最初认为Excel计算错误的原因是什么?

A:阿尔伯特起初判断是Oracle ERP系统与Excel之间的数据集成环节出现了故障,因此花费了大量时间逐一排查数据库中的PL/SQL函数逻辑。然而检查下来,集成代码本身并没有任何问题,他自己生成的文件数据也完全正确,这让问题变得更加扑朔迷离。

Q2:Excel表格数据偏差三分之一的真正原因是什么?

A:真正的原因是用户私自修改了电子表格。原始数据以"分钟"为单位记录可计费工时,用户认为数值过大,便自行将数据除以100,试图换算成小时。但正确的换算方式应该是除以60,除以100导致结果偏小约三分之一,从而引发了数据错误。

Q3:这次Excel数据错误事件带来了什么启示?

A:这次事件说明,技术系统本身运行正常,问题往往出在用户的操作行为上。用户在不了解数据含义和正确换算方法的情况下,擅自修改了系统生成的表格,导致计算结果出现规律性偏差。这提醒技术支持人员在排查问题时,除检查系统逻辑外,也需关注用户端的实际操作情况。