三表财务模型模板完成
完成并填充整合财务模型模板,在利润表、资产负债表和现金流量表之间建立正确的链接。
关键原则 —
在填充任何模板前请阅读
环境 — Office JS vs Python:
- 如果在 Excel 内部运行(Office 插件 / Office JS):
直接使用 Office JS。通过
range.formulas = [["=D14*(1+Assumptions!$B$5)"]] 编写公式 —
派生单元格切勿使用 range.values。无需单独重新计算;Excel
原生计算。使用 context.workbook.worksheets.getItem(...)
导航工作表。
- 如果生成独立的 .xlsx 文件: 使用
Python/openpyxl。写入
ws["D15"] = "=D14*(1+Assumptions!$B$5)",然后在交付前运行
recalc.py。
- Office JS 合并单元格陷阱: 不要在合并范围上先调用
.merge() 再设置 .values — 这会抛出
InvalidArgument,因为合并后的范围仍然报告合并前的尺寸。相反,单独写入左上角单元格的值,然后合并并格式化整个范围:ws.getRange("A1").values = [["利润表"]]; const h = ws.getRange("A1:G1"); h.merge(); h.format.fill.color = "#1F4E79";
- 以下所有原则在两种环境中同样适用。
公式优先于硬编码(不可协商):
- 每个预测单元格、滚动计算、链接和汇总必须使用 Excel 公式 —
绝不能是预先计算的值
- 使用 Python/openpyxl
时:写入公式字符串(
ws["D15"] = "=D14*(1+Assumptions!$B$5)"),而不是计算结果(ws["D15"] = 12500)
- 唯一应包含硬编码数字的单元格是:(1)历史实际数据,(2)假设选项卡中的驱动因素假设
- 如果您发现自己用 Python 计算值并将结果写入单元格 —
请停止。改为写入公式。
- 原因:模型必须在情景切换或假设变更时保持灵活。硬编码会无声地破坏所有下游完整性检查。
与用户逐步验证:
- 映射模板后 →
向用户展示您已识别的工作表和部分,在触及任何单元格前确认
- 填充历史数据后 →
向用户展示历史数据块,确认数值/期间与源数据匹配
- 构建收入预测后 →
运行小计检查,向用户展示预测的收入,在进入资产负债表前确认
- 构建资产负债表后 →
向用户展示每个期间的平衡检查(资产 = 负债 +
权益),在进入现金流量表前确认
- 构建现金流量表后 → 向用户展示现金勾稽(CF 期末现金
= BS 现金),在完成前确认
- 不要一次性完整填充整个模型然后直接呈现 —
在每个报表处暂停,展示工作,及早发现错误
格式化 —
专业蓝/灰配色(默认,除非模板或用户另有指定)
保持颜色最少。
仅使用蓝色和灰色填充单元格。不要引入绿色、黄色、橙色或多重强调色 —
干净的模型使用克制的色彩。
| 元素 |
填充 |
字体 |
| 部分标题(IS/BS/CF 标题) |
深蓝 #1F4E79 |
白色加粗 |
| 列标题(FY2024A、FY2025E 等) |
浅蓝 #D9E1F2 |
黑色加粗 |
| 输入单元格(历史数据、假设驱动因素) |
浅灰 #F2F2F2 或白色 |
蓝色 #0000FF |
| 公式单元格 |
白色 |
黑色 |
| 跨表链接 |
白色 |
绿色 #008000 |
| 检查行/关键汇总 |
中蓝 #BDD7EE |
黑色加粗 |
即 3 种蓝色 + 1 种灰色 + 白色。
如果模板有自己的配色方案,则遵循模板。
字体颜色表示单元格的类型(输入/公式/链接)。填充颜色表示位置(标题/数据/检查)。
模型结构
识别模板工作表组织
模板的工作表命名惯例和组织方式各不相同。在填充前,检查所有工作表以了解模板的结构。以下是常见的工作表名称及其典型内容:
| 常见工作表名称 |
要查找的内容 |
| IS、P&L、利润表 |
利润表 |
| BS、资产负债表 |
资产负债表 |
| CF、CFS、现金流量表 |
现金流量表 |
| WC、营运资本 |
营运资本明细表 |
| DA、D&A、折旧、PP&E |
折旧与摊销明细表 |
| 债务、债务明细表 |
债务明细表 |
| NOL、税务、DTA |
净营业亏损明细表 |
| 假设、输入、驱动因素 |
驱动因素假设和输入 |
| 检查、审计、验证 |
错误检查仪表板 |
模板检查清单
- 识别模板中存在哪些工作表(并非所有模板都包含每个明细表)
- 注意模板特有的任何工作表(未在上文列出)
- 理解工作表之间的依赖关系(例如,哪些明细表为主报表提供数据)
- 在每个工作表上定位输入单元格和公式单元格
理解模板结构
在填充模板前,熟悉其现有布局,确保数据输入在正确的位置,公式保持完整。
识别行结构
- 在每个工作表的顶部找到模型标题
- 识别部分标题及其视觉分隔
- 找到指示单位(百万美元、%、x 等)的单位行
- 注意区分实际期间和预测期间的列标题
- 确认期间标签(例如,FY2024A、FY2025E)
- 识别输入单元格和公式单元格(通常通过字体颜色区分)
识别列结构
- 确认最左列中的行项目标签
- 验证历史年份在预测年份之前
- 注意分隔历史期间和预测期间的视觉边框
- 检查所有工作表中列顺序是否一致
使用命名区域
模板通常对关键输入和输出使用命名区域。在输入数据前:
- 检查模板中现有的命名区域(Excel 中:公式 → 名称管理器)
- 常见的命名区域包括:收入增长率、成本百分比、关键输出(净利润、EBITDA、总债务、现金)、情景选择器单元格
- 确保输入被输入到供给这些命名区域的单元格中
预测期间
- 模板通常从最后一个历史年份开始预测未来5年
- 验证历史(A)和预测(E)列已清晰分开
- 确认列使用财年标注(例如,FY2024A、FY2025E)
利润率分析
注意:仅当用户提示或模板明确要求时才应进行以下利润率分析。如无提示,跳过此部分。
在利润表(IS)工作表上计算和显示盈利利润率,以跟踪运营效率并实现同行比较。
要包含的核心利润率
| 利润率 |
公式 |
衡量内容 |
| 毛利率 |
毛利润 / 收入 |
定价能力、生产效率 |
| EBITDA 利润率 |
EBITDA / 收入 |
核心运营盈利能力 |
| EBIT 利润率 |
EBIT / 收入 |
折旧摊销后运营盈利能力 |
| 净利润率 |
净利润 / 收入 |
底线盈利能力 |
含利润率的利润表布局
直接在每个利润项目下方显示利润率百分比:
- 毛利润下方显示毛利率 %
- EBIT 下方显示 EBIT 利润率 %
- EBITDA 下方显示 EBITDA 利润率 %
- 净利润下方显示净利润率 %
信贷指标
注意:仅当用户提示或模板明确要求时才应进行以下信贷分析。如无提示,跳过此部分。
在资产负债表(BS)工作表上计算和显示信贷/杠杆指标,以评估财务状况、债务能力和契约合规性。
要包含的核心信贷指标
| 指标 |
公式 |
衡量内容 |
| 总债务 / EBITDA |
总债务 / LTM EBITDA |
杠杆倍数 |
| 净债务 / EBITDA |
(总债务 - 现金)/ LTM EBITDA |
扣除现金后的杠杆 |
| 利息覆盖倍数 |
EBITDA / 利息费用 |
偿债能力 |
| 债务 / 总资本 |
总债务 /(总债务 + 权益) |
资本结构 |
| 债务 / 权益 |
总债务 / 总权益 |
财务杠杆 |
| 流动比率 |
流动资产 / 流动负债 |
短期流动性 |
| 速动比率 |
(流动资产 - 存货)/ 流动负债 |
即时流动性 |
信贷指标层级检查
验证乐观情景显示最强的信贷状况:
- 杠杆率:乐观 < 基准 < 悲观(越低越好)
- 覆盖倍数:乐观 > 基准 > 悲观(越高越好)
- 流动性:乐观 > 基准 > 悲观(越高越好)
契约合规跟踪
如果已知债务契约,添加明确的合规检查,将实际指标与契约阈值进行比较。
情景分析(基准/乐观/悲观)
在假设工作表中使用带有 CHOOSE 或 INDEX/MATCH
公式的情景切换(下拉菜单)。
| 情景 |
描述 |
| 基准情景 |
管理层指引或共识预期 |
| 乐观情景 |
超出指引的增长、利润率扩张 |
| 悲观情景 |
低于趋势的增长、利润率压缩 |
需要敏感化的关键驱动因素:收入增长、毛利率、SG&A%、DSO/DIO/DPO、资本支出%、利率、税率。
情景审计检查:切换应更新所有报表、所有情景下资产负债表平衡、现金勾稽、层级成立(乐观
> 基准 > 悲观,针对净利润、EBITDA、FCF、利润率)。
SEC 文件数据提取
如果模板明确要求从 SEC 文件(10-K、10-Q)提取数据,请参阅 references/sec-filings_cn.md
了解详细的提取指南。仅当使用公开公司监管文件数据填充模板时才需要此参考。
完成模型模板
本节为完成任何三表财务模型模板提供通用指导,同时保留现有公式并确保数据完整性。
步骤 1:分析模板结构
在输入任何数据前,彻底审查模板以了解其架构:
识别输入单元格与公式单元格
- 查找区分输入单元格和公式单元格的视觉提示(字体颜色、单元格底纹)
- 常见惯例:蓝色字体 = 输入,黑色字体 = 公式,绿色字体 =
链接到其他工作表
- 使用 Excel 的追踪引用单元格/从属单元格(公式 →
追踪引用单元格)来理解单元格关系
- 检查可能控制关键输入的命名区域(公式 → 名称管理器)
映射模板流程
- 识别哪些工作表为其他工作表提供数据(例如,假设 → IS → BS → CF)
- 注意任何辅助明细表及其与主报表的链接
- 在填充前记录模板的特定行项目和结构
步骤
2:在不破坏公式的情况下填充数据
数据输入黄金法则
| 规则 |
描述 |
| 仅编辑输入单元格 |
切勿覆盖包含公式的单元格,除非有意替换公式 |
| 保留单元格引用 |
复制数据时,使用粘贴数值(Ctrl+Shift+V)以避免使用源格式覆盖公式 |
| 匹配模板的单位 |
在输入数据前验证模板使用千、百万还是实际值 |
| 尊重符号惯例 |
遵循模板现有的符号惯例(例如,费用为正或负) |
| 检查循环引用 |
如果模板使用迭代计算,确保启用迭代计算 |
安全数据输入流程
- 识别专门用于输入的确切单元格(通常高亮或标记)
- 首先输入历史数据,然后验证这些期间的公式是否正确计算
- 输入驱动预测计算的假设参数
- 审查计算输出,确认公式按预期工作
- 如果必须修改公式单元格,在更改前记录原始公式
处理预建公式
- 如果公式引用了您尚未填充的单元格,预计会有临时错误(#REF!、#DIV/0!)直到所有输入完成
- 当公式产生意外结果时,追踪引用单元格以识别缺失或不正确的输入
- 切勿在未检查所有工作表中公式依赖关系的情况下删除行/列
步骤 3:验证公式
公式完整性检查
在依赖模板输出前,验证公式是否正常运行:
| 检查类型 |
方法 |
| 追踪引用单元格 |
选择公式单元格 → 公式 → 追踪引用单元格,验证其引用正确的输入 |
| 追踪从属单元格 |
验证关键输入流向预期的输出单元格 |
| 评估公式 |
使用公式 → 评估公式来逐步执行复杂计算 |
| 检查硬编码 |
预测公式应引用假设,而非包含硬编码值 |
| 用已知值测试 |
输入简单的测试值,验证公式产生预期结果 |
| 跨表一致性 |
确保相同的公式逻辑应用于所有预测期间 |
常见公式问题
- 混合绝对/相对引用导致跨期间复制时结果不正确
- 指向外部文件或已删除范围的链接断裂(#REF! 错误)
- 早期期间收入启动前的除零错误(#DIV/0! 错误)
- 循环引用警告(对于利息计算可能是故意的)
- 预测列间公式不一致(使用 Ctrl+\ 查找差异)
验证跨表链接
- 确认出现在多个工作表上的值是链接的(而非重复)
- 验证明细表合计与主报表上对应行项目一致
- 检查期间标签在所有工作表上对齐
步骤 4:按工作表进行质量检查
在填充模板后,对每个工作表执行以下验证检查:
利润表(IS)质量检查
- 历史期间的收入数字与源数据匹配
- 所有费用行项目合计到报告总数
- 小计(毛利润、EBIT、税前利润、净利润)计算正确
- 税务计算逻辑适当(正确处理亏损)
- 预测驱动因素引用假设工作表(无硬编码)
- 环比变化在方向上合理
资产负债表(BS)质量检查
- 每个期间资产 = 负债 + 权益(首要检查)
- 现金余额与现金流量表期末现金匹配
- 营运资本科目与辅助明细表一致(如适用)
- 留存收益正确滚动:期初留存收益 + 净利润 - 股息 +/- 调整 =
期末留存收益
- 债务余额与债务明细表一致(如适用)
- 所有资产负债表项目具有适当的符号(资产为正,大多数负债为正)
现金流量表(CF)质量检查
- 经营活动现金流顶部的净利润与利润表净利润匹配
- 非现金加回项(D&A、SBC 等)与其来源明细表/报表一致
- 营运资本变动具有正确的符号(资产增加 = 现金使用 = 负数)
- 资本支出与 PP&E 明细表或固定资产滚动一致
- 筹资活动与资产负债表上债务和权益账户的变动一致
- 期末现金与资产负债表现金匹配
- 期初现金等于上期期末现金
辅助明细表质量检查
- 期初余额等于上期期末余额
- 滚动逻辑完整(期初 + 增加 - 减少 = 期末)
- 明细表合计与主报表行项目一致
- 计算中使用的假设与假设工作表匹配
步骤 5:跨报表完整性检查
在验证各个工作表后,确认三张报表已正确整合:
| 检查 |
公式 |
预期结果 |
| 资产负债表平衡 |
资产 - 负债 - 权益 |
= 0 |
| 现金勾稽 |
CF 期末现金 - BS 现金 |
= 0 |
| 净利润链接 |
IS 净利润 - CF 起始净利润 |
= 0 |
| 留存收益 |
期初留存收益 + 净利润 + SBC - 股息 - BS 期末留存收益 |
= 0(根据需要调整 SBC/其他项目) |
步骤 6:最终审查
在认为模型完成前:
- 切换所有情景(如适用)以验证检查在每个情景下通过
- 检查所有 #REF!、#DIV/0!、#VALUE! 和 #NAME? 错误并解决或记录
- 确认所有输入单元格已填充(搜索占位符值)
- 验证所有工作表中的单位一致
- 在进行任何额外修改前保存一个干净版本
模型验证与审计
本节汇总已完成的模板的所有验证检查和审计程序。
核心链接(必须始终成立)
详见 references/formulas_cn.md。
| 检查 |
公式 |
预期结果 |
| 资产负债表平衡 |
资产 - 负债 - 权益 |
= 0 |
| 现金勾稽 |
CF 期末现金 - BS 现金 |
= 0 |
| 月度 vs 年度现金 |
期末现金(月度)- 期末现金(年度) |
= 0 |
| 净利润链接 |
IS 净利润 - CF 起始净利润 |
= 0 |
| 留存收益 |
期初留存收益 + 净利润 + SBC - 股息 - BS 期末留存收益 |
= 0 |
| 股权融资 |
Δ普通股/APIC(BS)- 股权发行(CFF) |
= 0 |
| 第0年权益 |
筹集的权益(第0年)- 期初权益资本(第1年) |
= 0 |
符号惯例参考
| 报表 |
项目 |
符号惯例 |
| CFO |
D&A、SBC |
正数(加回) |
| CFO |
ΔAR(增加) |
负数(现金使用) |
| CFO |
ΔAP(增加) |
正数(现金来源) |
| CFI |
资本支出 |
负数 |
| CFF |
债务发行 |
正数 |
| CFF |
债务偿还 |
负数 |
| CFF |
股息 |
负数 |
循环引用处理
利息费用会产生循环:利息 → 净利润 → 现金 → 债务余额 → 利息
在 Excel 中启用迭代计算:文件 → 选项 → 公式 →
启用迭代计算。设置最大迭代次数为 100,最大变化为
0.001。在假设工作表中添加断路器切换。
检查类别
第1节:货币一致性
- 已识别货币并在假设工作表中记录
- 所有工作表使用一致的货币符号和规模
- 单位行与模型货币匹配
第2节:资产负债表完整性
- 每个期间资产 = 负债 + 权益
- 公式:资产 - 负债 - 权益(必须 = 0)
第3节:现金流量表完整性
- 现金与 BS 一致(CF 期末现金 = BS 现金)
- 月度 vs 年度现金:期末现金(月度)= 期末现金(年度)
- 净利润与 IS 一致(CF 净利润 = IS 净利润)
- D&A 与明细表一致
- SBC 与 IS 一致
- ΔAR、Δ存货、ΔAP 与 WC 明细表一致
- 资本支出与 DA 明细表一致
第4节:留存收益
- 留存收益滚动检查:期初留存收益 + 净利润 + SBC - 股息 =
期末留存收益
- 显示组成部分细分以便调试
第5节:营运资本
- AR、存货、AP 与 BS 一致
- DSO、DIO、DPO 合理性检查(如超出正常范围则标记)
第6节:债务明细表
- 总债务与 BS 一致(流动 + 长期债务)
- 利息计算与 IS 一致
第6b节:股权融资
- 股权发行收入与 BS 普通股/APIC 增加一致
- 来自股权的现金增加 = 权益账户增加(必须平衡)
- 股权筹集勾稽:Δ普通股/APIC(BS)= 股权发行(CFF)(必须 = 0)
- 第0年权益勾稽:筹集的权益(第0年)= 期初权益资本(第1年)
第6c节:NOL 明细表
- 期初 NOL 余额(第1年/成立)= 0
- 仅当 EBT < 0 时 NOL 增加(亏损必须已实现才能产生 NOL)
- DTA 与 BS 一致(NOL 明细表 DTA = BS 递延所得税资产)
- NOL 使用 ≤ EBT 的 80%(2017年后联邦限制)
- NOL 余额非负(不能使用超过可用余额)
- 仅当 EBT < 0 时才产生 NOL
- 当应纳税所得额 ≤ 0 时,税费 = 0
第7节:情景层级
- 绝对指标:乐观 > 基准 > 悲观(净利润、EBITDA、FCF)
- 利润率:乐观 > 基准 > 悲观(毛利率%、EBITDA%、净利润率%)
- 信贷指标:杠杆率乐观 < 基准 < 悲观(反向)
第8节:公式完整性
- COGS、S&M、G&A、R&D、SBC
以收入百分比驱动(无硬编码)
- 预测年份间公式一致
- 无 #REF!、#DIV/0!、#VALUE! 错误
第9节:信贷指标阈值
- 根据契约阈值将指标标记为绿色/黄色/红色
- 任何红旗问题的摘要
主检查公式
将所有部分的状态汇总到单个主检查中:
- 如果所有部分通过 → "全部检查通过"
- 如果任何部分失败 → "检测到错误 - 请查看下方"
快速调试工作流程
当主状态显示错误时:
- 滚动查找红色高亮部分
- 识别哪个检查类别有失败
- 导航到源工作表进行调查
- 修复根本问题
- 返回检查工作表验证修复