article_image

每个单位总流传着一些赛博活化石,比如不知道出自哪一届前辈之手的超复杂电子表格。

最近我接手一个案件时,也遇到一个本息分期计算表,听上去好像只是小学算术级别的问题,但是利息、还款、先本后息、计息基础(因为案件跨度多年,法律和政策也在变动)等几条规则一综合,结果就是一张谁也无法理解全貌(注意是不想理解)的表格。

真正的技术问题在于单元格之间的引用。本例中,我发现有一列数据为负,现实中不存在还了“负一百块钱”这种情况,这列数据要么错了,要么只是辅助值,稍后会被纠正或有其他用处,然而,我不确定。

因为 Numbers 没有依赖检查功能(鉴于我一年接触的表格屈指可数,我不会装也不会学 Excel)。详言之,不少单元格中的数据基于其他格子计算而来,但你只能检查特定单元格引用了谁,却无法得知谁引用过当前的格子。因而,我也不确定眼前这列明显不符合实际的数据究竟有何用处(显然,我没有时间检查整个表格并尝试理解它,那我不如从头开始做)。

Alt text
Numbers 只能显示单向的引用

如果有助于你理解的话,可以把 Excel 想象成现代的卡片笔记软件,可以显示引用和被引用两层关系,但 Numbers 还处于上一代,只能显示单向的引用。当我好奇目前某列数据被用于何处时,Numbers 就力有未逮。

在不更换表格工具的前提下,我想到一种低技术的检查方式:把表格展平,将其中的公式暴露出来,然后当作纯文本处理,理论上就能找到所有引用关系。这就像笔记中的双向链接一样,原则上可以还原为简单的搜索操作。

假设在最简单的情况下,你的表格中只有一张表单(sheet),并且只有一个表(table),那么操作如下:

首先,创建一张新的临时表单,删除其中的所有内容(连同 table 一起删干净),再把原表单中的表复制过来,接着清除内容,只留空表。理论上你也可以不清空,但是残留内容可能导致部分单元格的公式显示错误,而我没有自信区分错误来自残留内容还是我手抖按错键盘。

随后,选中新表单中的整个表(快捷键 ⌘Command-A),运行文末的 AppleScript 代码,即可将原表单中的公式以纯文本形式复制到新表单中,不妨视作原表单已被展平,就像房屋已经被解构为平面图,更方便分析。

Alt text
将表格展平为公式

author_avatar

Lawyer, macOS/iOS Automation Amateur