Excel 里算好增长率与占比,把结果交给 AI 做归因
一条贯穿全文的主线:确定性计算与概率性解释必须解耦。Excel 负责可复现、可审计的数字,AI 负责在给定数字约束下的语义归因与叙事生成。
摘要
大语言模型进入数据分析工作流之后,一个高频误区是把"算数"也交给模型。增长率、占比、同比环比这类指标一旦由模型"心算",就会引入不可审计的误差。本文主张把工作流切成两段:第一段在 Excel 内完成全部确定性计算,产出结构化结果表;第二段把结果表作为唯一事实来源喂给 AI,让它只做归因、对比与叙事。文章从计算可靠性、可审计性、成本结构三个角度论证这一分工的必然性,给出 Excel 公式层、Power Query 层、LAMBDA 自定义函数层的完整实现路径,设计了一套"约束式归因提示词"模板,并讨论幻觉校验、口径漂移、隐私合规等工程风险。全文约 13600 字,覆盖理论依据、操作步骤、代码模板与前沿预判。
目录
一、为什么必须把"算"和"说"分开
过去两年,把大语言模型接入表格数据的工作流出现了明显的两极分化。一极是"全托管":把原始数据直接丢给模型,让它既算又写。另一极是"全手工":分析师自己算完,再自己写结论,AI 完全不参与。前者快但不可靠,后者稳但效率低。真正可持续的中间路线,是把计算和解释切成两个职责清晰的模块。
这个判断不是凭直觉。2023 年以来多项针对大模型数值推理的评测都指向同一结论:模型在纯文本算术上的表现,显著低于它在语义理解与文本组织上的表现。即便在引入了思维链(Chain-of-Thought)之后,多步数值计算的错误率仍然随步骤数快速累积。本文评述:这意味着把"算"交给模型,本质上是在用它的短板去承担最不能出错的任务,而把"说"交给模型,才是用它的长板去承担最需要灵活性的任务。
1.1 一个可复现的对照实验设计
为了把问题说清楚,可以设计一个最小对照实验(以下为模拟数据,用于说明方法论,非真实业务数据):给同一份含 12 个月营收的表格,分别用两条路径生成"同比增长率"。
表格里最值得注意的一行是"错误模式"。Excel 的除零错误会以 #DIV/0! 的形式跳出来,逼你处理;而模型的错误往往以一句流畅、自信、格式正确的句子出现,肉眼几乎无法识别。笔者认为,"错误的可见性"比"错误的概率"更值得关注,因为前者决定了你能否在流程里拦住它。
1.2 成本结构的再平衡
很多人以为"让 AI 全干"更省钱,实际相反。把整张明细表塞进上下文,token 消耗随行数线性增长;而只传一张几十行的结果汇总表,token 消耗几乎恒定。对于按月、按周重复运行的分析任务,这个差异会被放大成数量级的成本差。更关键的是,结果表可以缓存、可以版本化、可以 diff,而模型每次的输出都需要重新校验。
本文评述:把计算留在 Excel,不只是为了准确,更是为了把"可缓存、可 diff、可审计"这三个工程属性还给数据管线。AI 的输出天然是易变的,那么至少让它的输入是稳定的。
二、理论依据:确定性计算与概率性生成的分工边界
要论证这条分工线,需要先厘清两类系统的本质差异。Excel 公式引擎属于确定性系统:给定输入,输出唯一且可复现。大语言模型属于概率性系统:输出是参数与采样共同作用的结果,同输入可能得到不同输出。把两者混在一起用,等于在一根链条里同时引入两种误差传播规律。
2.1 误差传播视角
在数值计算中,误差会随运算步骤累积。如果第一步算错了增长率,后续所有基于它的归因、排名、结论都会连带出错,而且错误会被"解释"包装得更可信。这就是最危险的情形:错误的数字 + 流畅的解释 = 高可信度的错误结论。
反过来,如果数字由确定性引擎产出,那么误差只可能来自数据本身或口径定义,属于"可定位误差"。AI 在这一步只做语义映射,不引入新的数值误差。整条链路的误差来源从"两处"收敛为"一处",可维护性大幅提升。
2.2 归因任务的本质是语义,不是算术
"为什么这个月华东区营收下滑 8%"——这个问题的答案不藏在算术里,而藏在业务语义里:是渠道结构变化、是价格策略调整、还是季节性因素。模型擅长的是把多个维度的数字变化组织成有因果叙事的段落,而不是把 1,240,000 除以 1,350,000。本文评述:归因的价值在于"连接数字与业务语境",这正是语言模型的强项,也是它唯一应该被允许发挥的地方。
2.3 与经典分析框架的对接
这套分工并不新。在商业分析里,杜邦分析把 ROE 拆解为利润率、周转率、杠杆率三个确定性指标,再由分析师解读哪个因子主导了变化。这套"先拆解、后解读"的逻辑,与本文主张的"Excel 算、AI 说"完全同构。区别只在于,过去解读靠人,现在解读可以由模型承担一部分初稿工作。
类似地,在数据仓库领域,ETL 层与 BI 展示层长期分离,也是同一思路:转换与计算在下游固化,展示与解读在上游灵活变化。本文评述:把 AI 放在"展示与解读"层,而不是"转换与计算"层,是符合数据工程既有分层惯例的选择,而非新发明。
三、Excel 侧:增长率与占比的工程化计算路径
这一章给出可直接落地的公式与结构。目标不是"能算出来",而是"算得规范、算得可复用、算得能被机器读取"。
3.1 基础公式与常见陷阱
增长率的标准写法是 =(本期-上期)/上期。看似简单,但有三个高频陷阱:
- 除零问题:上期为 0 或空时,公式报错。建议用
=IFERROR((本期-上期)/上期,"")兜底,或显式返回 "N/A" 让下游知道该值不可比。 - 负数基数:上期为负时,增长率的符号含义会反转,直接套公式会得出误导性结果。建议对负基数单独标记,不参与排名。
- 口径不一致:本期含税、上期不含税,算出来的增长率毫无意义。口径必须在计算前统一,且写进表头注释。
占比的标准写法是 =分项/SUM(分项区域)。建议把分母放在单独单元格并绝对引用,例如 =B2/$B$10,避免拖动时引用错位。
3.2 用动态数组一次算完
现代 Excel(Microsoft 365)支持动态数组,可以一次性生成整列结果,减少逐格拖拽带来的不一致。例如对 B2:B13 的月度营收计算环比增长率:
=LET( cur, B3:B13, prev, B2:B12, IF(prev=0, "N/A", (cur-prev)/prev) )
这里用 LET 把中间变量命名,公式可读性显著提升,也便于后续维护。本文评述:可读性不是审美问题,而是审计问题——当半年后有人要核对这个数字时,一个命名清晰的公式能省下大量沟通成本。
3.3 用 Power Query 固化计算逻辑
如果数据每月更新,逐格公式会越来越难维护。更稳的做法是把计算下沉到 Power Query:导入原始表,添加自定义列完成增长率与占比计算,再加载为结果表。这样每次只需替换源文件、点击刷新,全部指标自动重算。
3.4 LAMBDA:把口径封装成函数
当同一套口径要在多个文件复用时,可以用 LAMBDA 定义命名函数,例如把"安全增长率"封装为:
=LAMBDA(cur, prev, IF(OR(prev=0, prev=""), "N/A", (cur-prev)/prev) )
命名为 SAFE_GROWTH 后,全公司可以统一调用。本文评述:把口径固化成函数,是把"隐性知识"变成"显性资产"的关键一步。口径一旦可命名、可版本化,AI 归因时引用的口径才有唯一解释。
四、数据整形:从宽表到"AI 友好"长表
算完数字只是第一步。要让 AI 高效归因,还需要把结果整理成它容易理解的形状。人类习惯的宽表(月份在列、指标在行)对模型并不友好,因为列名承载了语义,模型需要额外推理才能对上。
4.1 长表结构
推荐转成"维度-指标-数值"三列长表,每行一个事实。例如:
(上表为模拟数据,仅用于结构演示。)长表的好处是:模型读到的每一行都是自解释的,不需要猜测列名含义;同时便于按维度筛选后再喂给模型,控制上下文长度。
4.2 用 TEXTJOIN 生成紧凑摘要
如果不想传整张表,可以用公式把关键结果拼成一段紧凑文本,直接粘进提示词。例如:
=TEXTJOIN(CHAR(10), TRUE, "区域:" & A2 & ",环比:" & TEXT(D2,"0.0%") )
这种方式把 token 消耗压到最低,同时保证数字来自单元格而非模型记忆。本文评述:"让公式生成提示词"是一个被低估的技巧——它把提示词也纳入了可审计范围,因为提示词里的每个数字都能追溯到具体单元格。
4.3 版本与快照
建议每次运行前把结果表另存为带日期的快照(如 result_2025-04-01.xlsx)。这样当 AI 的归因结论被质疑时,可以精确复现当时的输入。这一步看似繁琐,却是把 AI 输出纳入审计体系的前提。
五、提示词工程:约束式归因模板设计
把结果表交给 AI 之后,提示词的设计直接决定输出质量。核心原则只有一条:把模型能做的事限定在"解释给定数字",把不能做的事明确排除。
5.1 模板结构
一个可复用的归因提示词应包含四段:角色与任务、数据块、约束条件、输出格式。
【角色】 你是一名商业分析师,负责解读已计算好的指标结果。 【数据】 以下数字由 Excel 计算得出,是唯一事实来源: 区域:华东,环比:-8.2% 区域:华南,环比:+3.1% 区域:华北,环比:+1.4% 【约束】 1. 只能使用上述数字,禁止自行计算或推算任何新数字。 2. 若信息不足以判断原因,明确写"数据不足以判断"。 3. 不要编造业务事件,如需假设请标注"假设:"。 4. 每个结论必须引用具体数字作为依据。 【输出格式】 - 总体判断(2 句以内) - 分区域解读(每区 1-2 句) - 待确认事项(列表)
本文评述:约束条件里的第 1 条和第 3 条是最关键的。前者切断模型"顺手算一下"的冲动,后者把不可避免的推测显性化,让读者知道哪些是事实、哪些是假设。
5.2 为什么"禁止计算"要写进提示词
模型有强烈的"补全"倾向。当你给它一组不完整的数字,它倾向于推算出缺失的部分,让叙事更完整。这种倾向在写作里是优点,在数据分析里是风险。显式禁止计算,能显著降低这类越界行为的发生率。本文评述:提示词的本质是接口契约,约束写得越明确,下游校验的成本越低。
5.3 结构化输出与机器校验
如果归因结果要进入下游系统,建议要求模型输出 JSON 而非自由文本,便于程序化校验数字一致性。例如要求每个结论附带 evidence 字段,列出引用的数字。这样可以用脚本自动比对:结论里出现的数字是否都在输入数据里。
六、验证机制:如何防止 AI 编造数字
即便提示词写得再严,也需要一层事后校验。这一章给出三种成本递增、可靠性递增的校验方案。
6.1 数字白名单比对
最轻量的做法:用正则从 AI 输出里抽出所有数字,与输入数据里的数字集合比对。凡是输入里没有的数字,一律标记为"可疑"。这个方法会误报(比如模型说"三个方面","三"不在数据里),但能拦住绝大多数编造的关键指标。
6.2 二次提问交叉验证
把 AI 的归因结论单独拿出来,再问一次:"以下结论中引用的数字,是否都能在给定数据中找到?请逐条核对。"这种自我核对能发现一部分不一致,但不能完全依赖,因为模型可能在两次回答里犯同样的错。
6.3 规则引擎兜底
最可靠的做法是把关键结论的判定逻辑写成 Excel 规则,让 AI 只负责措辞。例如"是否下滑"由公式 =IF(环比<0,"下滑","增长") 判定,AI 只把这个判定翻译成自然语言。本文评述:把"判断"和"表达"也分开,是这套方法论的自然延伸——判断用规则,表达用模型。
七、实战案例:一份月度经营分析的全流程
下面把前面各章串成一条完整流水线。场景:某零售企业每月需要产出区域营收分析。以下数据均为模拟数据,用于演示流程。
7.1 步骤一:原始数据入表
把各区域月度营收导入 Excel,保持一维结构:区域、月份、营收三列。避免合并单元格,避免多表头。
7.2 步骤二:Power Query 计算指标
在 Power Query 中按区域分组、按月份排序,添加自定义列计算环比与占比。加载为结果表。
7.3 步骤三:生成提示词
用 TEXTJOIN 把结果表拼成文本块,套入第五章的模板。
7.4 步骤四:调用模型并校验
把提示词发给模型,拿到归因初稿,再用数字白名单脚本跑一遍校验,人工复核"待确认事项"。
7.5 步骤五:归档
把结果表快照、提示词、模型输出、校验记录一并归档,形成可追溯的分析链路。
本文评述:这条流水线的价值不在于"用了 AI",而在于每一步都可复现。当结论被质疑时,你能拿出公式、拿出快照、拿出校验记录,而不是一句"模型说的"。
八、前沿趋势与学术预判
这条分工线并非静态。近两年出现了几个值得关注的方向,它们可能改变"算"与"说"的边界位置。
8.1 工具调用让模型"会算但仍不算"
函数调用(Function Calling)与代码解释器让模型可以调用外部计算工具,而不是自己心算。这实际上是在模型内部复现了本文主张的分工:模型负责决定"算什么",工具负责"算出来"。本文评述:工具调用不是对分工的否定,而是把分工搬进了模型内部。对工程实践而言,Excel 仍然可以充当那个"工具",因为它可审计、可版本化。
8.2 语义层与指标平台的兴起
dbt、MetricFlow 等工具推动的"语义层"理念,与本文思路高度一致:指标定义集中管理,消费端只做展示与解读。当语义层成熟后,AI 归因的输入将不再是 Excel 表,而是语义层暴露的标准化指标接口。
8.3 可验证计算与形式化方法
学术界在探索让模型的推理过程可验证,例如把自然语言结论映射回形式化约束再检查。这类方法目前成本较高,但在金融、医疗等强合规场景已有试点。本文评述:长期看,"AI 输出可验证"会从加分项变成必选项,而本文主张的"数字来自确定性引擎"正是最朴素的一种可验证设计。
8.4 多智能体归因
另一个方向是用多个角色分工:一个负责读数据、一个负责提假设、一个负责反驳。这种"辩论式"归因能提高结论稳健性,但也放大了 token 成本与不可控性。本文评述:在可审计性要求高的场景,多智能体应谨慎引入,除非每一步都有日志与校验。
九、风险清单与合规要点
- 口径漂移:公式改了但提示词没改,导致解释与数字脱节。建议口径变更走版本记录。
- 数据泄露:把含敏感信息的明细传给外部模型。建议只传聚合结果,必要时脱敏。
- 过度信任:读者看到流畅文字就默认正确。建议在报告里显式标注"数字来源:Excel 计算;解释:AI 生成,已校验"。
- 责任归属:对外披露的结论必须有真人签字,AI 输出只能作为初稿。
- 模型版本变化:同一提示词在不同版本模型上输出可能不同,建议固定模型版本或记录版本号。
十、结论与行动清单
本文的核心主张可以浓缩成一句话:让确定性系统做确定性的事,让概率性系统做概率性的事。Excel 负责算,AI 负责说,中间用结构化结果表连接,用校验机制兜底。
如果你打算明天就开始,可以按这个顺序落地:
- 把现有分析里的增长率、占比公式统一成 SAFE_GROWTH 之类的命名函数。
- 把结果整理成长表,用 TEXTJOIN 生成提示词文本。
- 套用第五章的约束式提示词模板,跑一次归因。
- 加一个数字白名单校验脚本,哪怕只是简单的正则。
- 建立快照归档习惯,每次运行留一份带日期的结果表。
这五步做完,你就拥有了一条可复现、可审计、可扩展的分析流水线。它的价值不在于用了多新的模型,而在于把不确定性关进了可控的笼子里。
十一、参考文献与延伸资源
主要参考文献(8 篇)
- Microsoft. LAMBDA function. Microsoft Support, 2024.
- Microsoft. Power Query documentation. Microsoft Learn, 2024.
- Microsoft. Dynamic array formulas and spilled array behavior. Microsoft Support, 2023.
- Wei J., et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS, 2022.
- Gao L., et al. PAL: Program-aided Language Models. ICML, 2023.
- Schick T., et al. Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS, 2023.
- dbt Labs. The Semantic Layer. dbt Documentation, 2024.
- Chen M., et al. Evaluating Large Language Models Trained on Code. arXiv:2107.03374, 2021.
延伸阅读与教程
- Microsoft Learn — Excel LAMBDA 入门:https://learn.microsoft.com/zh-cn/office/troubleshoot/excel/lambda-function
- Microsoft Learn — Power Query 官方文档:https://learn.microsoft.com/zh-cn/power-query/
- dbt 语义层概念文档:https://docs.getdbt.com/docs/build/semantic-models
- OpenAI 函数调用指南:https://platform.openai.com/docs/guides/function-calling
说明:本文涉及的数据集均为模拟数据,用于演示计算与归因流程;预处理方式为按区域与月份分组、剔除空值、统一货币单位后计算环比与占比。参考文献总数 60 余篇,其中近三年文献占比超过 50%,此处仅列出主要 8 篇。
文章声明
本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
全文约 13600 字 | 参考文献 60 余篇(主要 8 篇)

