如何分析他人创建的电子表格(无需逆向工程)

在信任一份接手的工作簿中的数据之前,你需要确认三件事:第一,哪张工作表才是真正的源头;第二,哪些单元格是手动输入的数值,而不是公式;第三,该文件在哪些地方引用了外部数据。其余的都只是细节。
大多数人会直接跳到汇总标签页开始阅读。这就是为什么 11 个月前手动硬编码修改的数据,最终会出现在董事会汇报材料中。
本指南将介绍为什么接手的工作簿如此难以解读、人们尝试破译它的三种方法,以及每种方法的局限性。
为什么别人建的电子表格很难看懂
工作簿记录的不只是数据,还有决策。而这些决策是隐形的,做出决策的人通常也已经离职了。
最棘手的问题是,一个显示为 48,200 的单元格完全看不出其数据来源。它可能是一个公式、一个粘贴的数值,也可能是某人在面临截止日期时手动覆盖了公式的数值。这三种情况看起来一模一样。
结构也会被隐藏。工作表可以被隐藏,行可以被分组和折叠,命名区域指向的地方可能与其名称暗示的完全不同。指向你并没有的文件的外部链接会继续默默显示上一次缓存的结果,而不会报错。
还有版本问题。当一个文件夹里同时存在 model_v3、model_final 和 model_final_USE_THIS 时,文件名根本说明不了任何问题。
这会让你付出什么代价
在回答一个问题之前要花上一整天。 第一个要求通常很简单,比如为什么总计变了。要诚实地回答这个问题,意味着必须先理清整份工作簿的脉络,因为你无法排除是否存在你还没发现的手动覆盖数据。
盲目的自信。 如果不理清脉络,就只能选择相信汇总标签页。这虽然能快速给出答案,但当别人提出质疑时,你将无话可说。
隐蔽的公式断裂。 在没有理清脉络的情况下修改工作簿,可能会在无意中切断某种引用关系。数值依然在计算,所以看起来一切正常,直到审查人员发现该数据不再随源数据变化而变化。
这些代价最终会沉重地落在最后一个接手该文件的人身上。当别人建的电子表格经过三手,每个人都打个补丁却没人记录,后果可想而知。
人们尝试的临时解决方法
方案 1:将手动输入的数字与计算得出的数字分开
在解读任何逻辑之前,先找出哪些单元格是输入值。ISFORMULA 会对任何包含公式的单元格返回 TRUE,因此在工作表中添加一个辅助列可以立即找出硬编码的数值。
如果你想直接查看逻辑而不仅仅是标记它,可以使用 FORMULATEXT 将公式作为文本返回。将其排在数值旁边,就能让原本晦涩难懂的数据块变得清晰易读。
这是最有价值的第一步,而且确实很快。但它的局限在于覆盖范围:你必须逐张工作表应用,而一个大型工作簿中的工作表数量往往会耗尽你的耐心。
方案 2:追踪引用关系
Excel 的“公式审核”工具可以绘制出这些关系。微软官方文档中介绍了如何显示公式与单元格之间的关系,其中“追踪引用单元格”(Trace Precedents)可以显示哪些单元格为当前单元格提供数据,“追踪从属单元格”(Trace Dependents)则显示当前单元格影响了哪些单元格。
箭头的颜色包含特定信息。蓝色箭头表示没有错误的单元格,红色箭头指向导致错误的单元格。指向工作表图标的黑色箭头表示该引用存在于另一张工作表或其他工作簿中。最后一种情况就是你发现外部依赖关系的方式。
对于单个复杂的公式,逐步求值可以显示每个中间结果。这种方法虽然慢,但很可靠。
它的瓶颈在于工作量。追踪是针对单个单元格的操作,一个拥有 400 个公式的模型意味着需要进行 400 次操作。
方案 3:进行工作簿级别的全面盘点
与其逐个阅读单元格,不如对文件进行编目。列出每一张工作表(包括隐藏的工作表)、每一个外部链接、每一个命名区域,以及列中公式规律在半路中断的每一个地方。
微软官方文档中介绍了一款专门用于此目的的加载项——Spreadsheet Inquire,它可以分析工作簿的结构和关系。该功能是否可用取决于你的 Office 版本,因此在规划使用前请先查看相关页面。循环引用需要单独处理,微软也单独介绍了如何查找和处理循环引用。
全面盘点是最完整的方案,但工作量也最大。而且,它回答的问题往往与你被问到的问题风马牛不相及。
共同的瓶颈。 这三种方法都只能解释工作簿是如何计算的,但都无法告诉你数据是否正确,而且一旦遇到第四个版本,之前的所有工作都得付诸东流。
如何使用 Powerdrill Bloom 分析接手的工作簿
步骤 1:上传工作簿
直接上传你收到的原始文件,无需事先整理。Powerdrill Bloom 会在文件导入时对每张工作表进行画像分析。在阅读任何公式之前,工作表数量、列类型、空白数据块和不一致的数值类型都已一目了然。
步骤 2:用自然语言提问结构性问题
先从结构图入手,而不是直接看数字。询问哪些工作表看起来像原始输入,哪些看起来像派生的汇总,以及同一个字段在不同工作表中出现不同数值的地方。
然后直接提出信任度问题。询问哪些列在半路中断了其自身的规律,以及哪些总计与其下方的行数据不匹配。这两个问题的答案可以定位出绝大多数的手动覆盖。
步骤 3:导出图表、报告或幻灯片
导出工作簿的结构摘要,或者从你决定信任的工作表中导出图表。记录你已验证内容的简短书面说明也同样适用。
为什么这比逐个单元格阅读公式更好
| 手动方式 | Powerdrill Bloom | |
|---|---|---|
| 寻找硬编码数值 | 每张工作表添加辅助列 | 直接询问哪些数值打破了规律 |
| 理解引用关系 | 逐个单元格追踪箭头 | 直接询问哪些工作表为哪些提供数据 |
| 检查总计是否真实 | 手动重新构建 | 直接询问其是否与对应的行匹配 |
| 第四个版本到来时 | 重复所有步骤 | 直接上传新文件 |
最后一行是改变行为模式的关键。理清一次工作簿的脉络可能只需要花上一个下午,这很合理。但每当同事发送修改版本时都要重新理清一次,正是导致人们放弃检查的原因。
常见错误
盲目信任汇总标签页。 它是任何工作簿中被修改最频繁的工作表,也是最有可能包含手动修补数据的地方。在引用它之前,请务必对照详细数据进行验证。
在理清脉络前进行修改。 在尚未理解的结构中修改单元格,可能会在无意中切断引用关系。请先理清脉络,再进行修改。
假设整列的公式是一致的。 一个在前 200 行运行正常的公式,可能会在第 201 行被手动覆盖。请检查整列的规律,而不仅仅是顶部几行。
忽略隐藏的工作表。 隐藏的工作表通常存放着其他所有内容都依赖的查找表。在得出“该文件很简单”的结论之前,请取消隐藏所有内容。
将文件名视为版本依据。 带有“final”(最终版)字样的文件并不能作为凭证。在选择文件之前,请先对比候选文件之间的实际数据——我们关于如何同时分析多个 Excel 文件的指南中详细介绍了这种对比方法。
从头重构。 这很有诱惑力,但通常是个错误。重构会丢失原始文件中未记录的规则,而这些规则往往是数据能够对账成功的唯一原因。
在理解之前进行清理。 删除合并单元格和空白行虽然能让文件更容易阅读,但也会破坏其构建方式的线索。请务必先备份一份副本。
结语
接手一份工作簿,在进行分析之前,首先要解决的是阅读问题。找到真正的源工作表,将手动输入的数值与计算得出的数值分开,顺着引用关系向外追踪,然后再去回答你被问到的问题。
这并不是不信任编写它的人。别人建的电子表格是其在截止日期压力下所做决策的记录,仔细阅读它是使用它必须付出的代价。
真正昂贵的地方在于每次修改都要重来一遍。如果你的时间都耗在了这上面,不妨直接将收到的原始文件导入并尝试使用 Powerdrill Bloom。另请参阅我们关于如何使用 AI 分析 Excel 和清理和去重数据的指南,以及 Excel AI 助手和 AI 数据清理页面。
常见问题解答
如何在别人建的电子表格中查找硬编码的数值?
使用 ISFORMULA 添加一个辅助列,该函数会对公式单元格返回 TRUE,对手动输入的单元格返回 FALSE。计算区域内的每一个 FALSE 都是一个值得调查的手动覆盖。
如何将单元格背后的公式显示为文本?
在相邻的单元格中使用 FORMULATEXT。它会将公式作为可读的字符串返回,这样无需逐个点击单元格,就能快速浏览整列的逻辑。
How do I find out what a cell depends on?
使用“公式”选项卡上的“追踪引用单元格”来查看哪些单元格为该单元格提供数据,使用“追踪从属单元格”来查看它影响了哪些单元格。指向工作表图标的黑色箭头表示该引用位于当前工作表之外。
在分析接手的工作簿之前,我应该先对其进行清理吗?
在理清脉络之前不要清理。清理会破坏文件构建方式的线索,包括标记结构的合并单元格和空白数据块。无论如何,请保留一份未修改的副本。
检查总计是否可靠最快的方法是什么?
根据其下方的行数据重新构建并进行对比。如果两者不一致,说明该总计包含手动覆盖、筛选区域,或者引用了你尚未查看的工作表。