引子:Excel 出现之前,会计的桌上有一张纸

1978 年,哈佛商学院的教室里,一位 MBA 学生盯着黑板出神。教授在讲财务模型,每改一个价格假设,就得擦掉一整黑板数字,从头再算一遍。

那个学生叫 Dan Bricklin。他脑子里冒出一个念头:如果这块黑板会自己重算呢?

第二年,VisiCalc 问世,跑在苹果 II 型机上,是史上第一个电子表格软件。它后来有了继承者:1983 年的 Lotus 1-2-3,1985 年的 Excel。而第一批掏钱买它的人,就是会计和财务人员。

这不是巧合。要知道,“Spreadsheet” 这个词在计算机出现之前就有——它指的就是老会计桌上那张分栏的账纸、审计底稿用的多栏分析纸。表头写着"本栏 = 上栏 × 税率",页脚算着合计,改一个数,橡皮加计算器,全表重来。

电子表格不是发明了表格,它只是把会计那张纸搬进了屏幕——并给它装上了引擎。

要看透函数的本质,就得回到设计者的原点:他们到底想造一台什么机器?

一、设计图纸上的三个奠基决定

设计者要解决的问题只有一个:改一个输入,让所有受影响的格子自己更新。为此他们画了三张底图。

底图一:给每个格子发一个地址。

A1、B7、C100……这是整座大厦的地基。为什么先干这个?因为要让一个格子"引用"另一个格子,前提是每个格子有唯一的名字。会计人秒懂:没有科目编码,就没有总账系统。地址就是坐标,是"可被引用"的前提。

底图二:格子里存的不是数,是关系。

你在 C5 输入 =B3*B4,C5 里真正保存的不是那个乘积,而是"我是 B3 乘 B4"这条关系。数字,只是这条关系的当前结果。

这绝不是"记一个数",这是登记一条勾稽关系。你底稿上写的"审定数 = 明细合计 ± 调整分录",Excel 把这种关系直接存进了格子本体。

底图三:一台重算引擎。

Excel 在后台默默维护着一张巨大的依赖关系网——谁引用谁。任何格子一变,它只沿着依赖链条,重算受影响的格子。这台引擎才是电子表格的灵魂,是那块"会自己重算的黑板"。

三张底图合起来就一句话:

Excel 不是计算器,是一台"关系维护机器"。计算器算数;Excel 维护数与数之间的关系。

二、那么,函数在这张图纸上是什么位置?

顺着设计逻辑往下推。

当千百万用户用公式表达关系时,出现了大量重复动作:把一列数加总、算折旧、算复利、查对应值。每个会计每周都在手写同一种公式。

设计者的选择是:把这些高频动作一次性写好、测试好、封装起来、起个名字——这就是函数。

所以函数在设计图纸上的位置是:官方预制好的标准工序,插在关系机器上的标准件。

本文最重要的一句话来了:

公式,是你自己写的一条勾稽关系;函数,是"准则"——把常见处理方式标准化封装,人人直接引用,不必每次重新论证。清代数学家李善兰对 “function” 这个词的翻译是:凡此变数中函(包含)彼变数者,则此为彼之函数。

准则为什么存在?因为同类业务反复出现,需要标准答案来降低沟通与复核成本。函数的存在理由,一模一样。

由此推出三个结论,能解决会计人日常九成的困惑:

  1. 参数是固定接口。 准则条文怎么写你就怎么执行。SUM 要数字你喂文本,就像把金额填进了摘要栏——不是准则错了,是你没按条文来。VLOOKUP 第四参数默认模糊匹配,就像准则里"除另有说明外"的默认条款,不读原文必踩坑。
  2. 结果确定、可复核。 同输入必同输出,天生适配"重新执行"这种审计程序。这是设计出来的可复核性。
  3. 错误代码是关系网的健康诊断。 #REF! 是地址断了(底稿行列被人删了);#N/A 是引用对象不存在(往来核对有差异——它本来就该暴露出来)。格子里存的是关系,关系断了机器才会喊。它不是在报错,它是在履行设计使命。

三、为什么函数的行为"长成这样"——一切都能从底图推出来

这是"看懂设计"和"死记硬背"的分水岭。随便举几个:

为什么复制公式,引用会自己跑? 因为设计目标就是"复制关系的模式"——表头那个"上行 × 税率"的模式,理应整列复用。所以默认相对引用,关系跟着走;$ 是钉死锚点的开关。于是就有了那个经典事故:费率格忘加 $,下拉之后整列关系悄悄滑位,而且不报错。这是关系机器最凶险的静默故障。会计人的对策依旧:交付前 Ctrl + ~ 亮出全部公式,肉眼巡一遍关系网——这是内控动作,不是炫技。

为什么嵌套可行? 因为关系可以首尾相接成链条。多层 IF 就是账龄分段的决策流程图,一环扣一环。方法论不变:先拆成单步(辅助列),跑通再合并——底稿本来就是分级做的。

为什么新函数是这个方向? XLOOKUP、FILTER、动态数组溢出,全是同一条 DNA:让你向一片数据提问,而不是向一个格子提问。SUMIFS 的本质就是一句口语:“华东区、销售费用—差旅费,合计多少?” 新函数只是让这句提问越来越短、越来越像人话。

为什么四百多个函数永远学不完? 因为函数是"标准工序库",库一直在扩。但工序底下那台机器——地址、关系、重算——四十多年没变过。你该精通的是机器,不是背下整个仓库。

四、LAMBDA:设计闭环的高光时刻

2020 年底,Excel 365 放出了一个函数:LAMBDA——用户可以自己定义函数。

这一步意味深长。当年,设计者替用户封装标准工序;如今,封装权交回到用户手里。设计者等于亲口承认了函数的本质:可复用计算流程的封装——谁封装都算数。

对会计人,这是实打实的生产力:把每月底稿里雷打不动的逻辑——账龄分段规则、含税价拆分、科目重分类——用 LAMBDA 封成自己的函数,一次定义,处处调用,全组共用。这就是你部门的"内部操作规程",机器替你执行到永远。

五、别忘了:会计人本来就是它为之设计的人

回到起点:电子表格的第一批用户就是会计。它的设计语言,从头到尾就是会计语言。

Excel 的设计 会计的世界
单元格地址 科目编码、账页位置
公式 勾稽关系
函数 准则:标准化的处理方法
重算引擎 过账联动:一笔分录变动,总账报表自动更新
依赖关系网 底稿的索引与交叉引用
#REF! / #N/A 勾稽关系断裂报告

所以学 Excel,不是在学一门"IT 技能",而是在把脑子里已有的会计体系,翻译到一台恰好为此而生的机器上。


实操建议只给一条,因为它是纲:建任何表之前,先像设计者一样画"关系图",而不是先想"用哪个函数"。 哪些格子是输入(原始数据),哪些是派生(公式),关系怎么流。关系想清楚了,函数只是最后落笔时查一下名字。顺序反过来,就等于把科目表扔在一边,先去挑凭证纸的牌子。

结语:四十多年,它只干了一件事

从 1979 年的 VisiCalc 到今天,从纸质多栏账页到 LAMBDA,电子表格的内核从未更换:

把会计人用橡皮和计算器维护的那张关系网,交给机器自动维护。

公式是关系,函数是标准工序,重算引擎是那双不知疲倦的手。外壳还会继续换——Power Query、Python、AI——但只要"地址、关系、自动重算、标准封装"这套 DNA 还在,你今天悟到的一切,都能平移过去。

毕竟,四十多年前,它的第一行代码,就是为了让黑板上的数字不再被反复擦掉而写的。

下一篇,我想写《LAMBDA 实战:把你的账龄规则封装成部门自己的"内部准则"》,手把手拆一个案例。