
简介这份《管理会计》第4章本—量—利分析培训PPT面向财会专业学生、管理会计学习者及企业财务培训场景系统讲解成本、销量与利润之间的内在关系帮助读者掌握盈亏平衡点测算、目标利润规划与利润敏感性分析等核心技能。资源包内含1个PPT文件约389KB以章节化幻灯片形式呈现便于课堂讲授与自学梳理。内容从基本含义与假定出发依次展开单一品种与多品种条件下盈亏平衡点的确定方法涵盖基本等式法、贡献毛益法、图解法及综合贡献毛益率法、联合单位法、分算法并分析单位售价、单位变动成本、固定成本、品种结构等因素变动的影响同时讲解安全边际、保本作业率、目标利润分析、敏感系数与经营杠杆系数最后延伸至不确定条件与非线性关系下的本—量—利分析。目前已有31人学习适合需要系统掌握管理会计分析工具、提升经营决策能力的读者参考。1. 从一张 PPT 到一套可复算的本量利模型很多财务同事拿到《管理会计》第4章的本—量—利分析课件第一反应是“公式就那几个背下来就行”。真到业务里问题立刻变形销售说降价 5% 能多卖 20%到底接不接产线要上一台新设备固定成本涨 30 万盈亏平衡点会挪到哪里课件里的图是静态的业务里的量、价、成本每天都在动。本—量—利分析CVP真正要解决的是把“利润 销量 ×单价 − 单位变动成本− 固定成本”这条式子变成能反复代入、能画图、能做敏感性测试的工具。它适合财务分析、经营分析、产品定价也适合任何需要判断“卖多少才不亏”的人。下面从公式拆解讲到用 Python 复现课件里的保本图和多产品加权模型最后落到几个容易算错的参数上。2. 本—量—利分析的核心公式与关键假设2.1 从利润等式拆出边际贡献CVP 的起点是一个恒等式不是经验公式利润 销售收入 − 变动成本 − 固定成本 销量 × 单价 − 销量 × 单位变动成本 − 固定成本 销量 ×单价 − 单位变动成本− 固定成本括号里那一项就是单位边际贡献Unit Contribution Margin, UCM。它衡量每多卖一件能拿回多少钱去覆盖固定成本。边际贡献先补固定成本补完之后剩下的才是利润。这个顺序决定了 CVP 的所有推论固定成本是“门槛”边际贡献是“爬坡速度”。课件里常出现的三个派生指标本质都是这条式子的移项指标公式含义盈亏平衡销量固定成本 ÷ 单位边际贡献卖多少件利润为零盈亏平衡销售额固定成本 ÷ 边际贡献率折成金额的保本点安全边际率实际销量 − 保本销量÷ 实际销量离亏损还有多远边际贡献率 单位边际贡献 ÷ 单价。多产品场景下这个比率要用加权平均后面会展开。2.2 课件没强调但必须记住的四个假设CVP 是线性模型成立有前提脱离前提算出来的数会骗人成本能干净地切成固定和变动两部分。混合成本比如阶梯电费、带底薪的提成要先分解常用高低点法或回归法。单价不变。现实中降价促销会让单价随销量变化这时线性关系断裂得改用非线性 CVP。单位变动成本不变。产量大幅上升时采购议价、加班费会让单位变动成本漂移。产销平衡。如果产量大于销量固定成本会被存货吸收变动成本法下的利润和完全成本法对不上。提示做敏感性分析前先确认这四个假设在当前业务里是否近似成立。假设崩了后面所有数字都只是算术练习。2.3 用 Python 把公式变成可调用函数手工算一次没问题要反复试算就得写成函数。下面这段覆盖单产品的保本点、安全边际和目标利润销量def cvp_single(price, unit_vc, fixed_cost, target_profit0, actual_qtyNone): price: 单价 unit_vc: 单位变动成本 fixed_cost: 固定成本总额 target_profit: 目标利润默认 0 即求保本点 actual_qty: 实际销量用于算安全边际 ucm price - unit_vc # 单位边际贡献 if ucm 0: raise ValueError(单位边际贡献非正卖得越多亏得越多) cm_ratio ucm / price # 边际贡献率 be_qty fixed_cost / ucm # 保本销量 be_sales fixed_cost / cm_ratio # 保本销售额 qty_for_target (fixed_cost target_profit) / ucm # 目标利润销量 result { 单位边际贡献: round(ucm, 2), 边际贡献率: round(cm_ratio, 4), 保本销量: round(be_qty, 2), 保本销售额: round(be_sales, 2), 目标利润销量: round(qty_for_target, 2), } if actual_qty: result[安全边际率] round((actual_qty - be_qty) / actual_qty, 4) return result print(cvp_single(price100, unit_vc60, fixed_cost80000, target_profit20000, actual_qty3000))逻辑说明先算单位边际贡献它是所有后续计算的除数所以第一步就拦截非正值避免出现“负的保本点”这种无意义结果。target_profit默认为 0传 0 就是课件里的保本点传正数就是“想赚这么多需要卖多少”。actual_qty可选传了才计算安全边际率。参数说明price和unit_vc必须同口径都是不含税单价和单位变动成本混用含税和不含税是最常见的错误来源。fixed_cost是期间固定成本总额不要漏掉分摊的折旧和固定管理费用。3. 多产品结构下的加权边际贡献与销售组合3.1 为什么不能把各产品保本点简单相加单一产品的保本点好算多产品就麻烦了固定成本是共享的A 产品卖得多不代表整体保本因为各产品的边际贡献率不同。课件里通常给一个销售组合sales mix比如 A:B 3:2这时要算加权平均单位边际贡献或加权平均边际贡献率。核心思路把销售组合当成一个“虚拟产品包”先算这个包的平均边际贡献再用它去除固定成本得到的是“包”的数量最后按比例拆回各产品。3.2 加权平均边际贡献率的计算步骤假设三种产品的数据如下产品单价单位变动成本单位边际贡献销售占比A100604050%B80503030%C120903020%加权平均单位边际贡献 40×0.5 30×0.3 30×0.2 20 9 6 35 元。若固定成本为 70000 元则综合保本销量 70000 ÷ 35 2000 件再按占比拆A 1000 件、B 600 件、C 400 件。用代码实现避免手算占比时出错def cvp_multi(products, fixed_cost): products: [{name: A, price: 100, unit_vc: 60, mix: 0.5}, ...] mix 为销售占比合计应为 1 total_mix sum(p[mix] for p in products) if abs(total_mix - 1) 1e-6: raise ValueError(f销售占比合计为 {total_mix}应为 1) w_ucm sum((p[price] - p[unit_vc]) * p[mix] for p in products) if w_ucm 0: raise ValueError(加权单位边际贡献非正检查定价或成本) be_total fixed_cost / w_ucm detail [] for p in products: detail.append({ 产品: p[name], 单位边际贡献: p[price] - p[unit_vc], 保本销量: round(be_total * p[mix], 2), }) return {加权单位边际贡献: round(w_ucm, 2), 综合保本销量: round(be_total, 2), 分产品: detail} products [ {name: A, price: 100, unit_vc: 60, mix: 0.5}, {name: B, price: 80, unit_vc: 50, mix: 0.3}, {name: C, price: 120, unit_vc: 90, mix: 0.2}, ] print(cvp_multi(products, fixed_cost70000))逻辑说明先校验销售占比合计是否为 1占比错了后面全错。加权单位边际贡献用各产品单位边际贡献乘以占比求和。综合保本销量除以占比拆回各产品得到每个产品需要卖多少件才能让整体不亏。参数说明mix是销售结构不是产能结构。如果实际销售占比和假设偏离保本点会移动这正是下一章敏感性分析要处理的问题。3.3 销售组合变化对保本点的影响销售组合是 CVP 里最容易被忽略的变量。同样卖 2000 件如果高边际贡献的 A 产品占比从 50% 降到 30%加权单位边际贡献会下降保本点上升。可以写一个快速对比base cvp_multi(products, 70000) shifted cvp_multi([ {name: A, price: 100, unit_vc: 60, mix: 0.3}, {name: B, price: 80, unit_vc: 50, mix: 0.3}, {name: C, price: 120, unit_vc: 90, mix: 0.4}, ], 70000) print(原组合保本销量:, base[综合保本销量]) print(新组合保本销量:, shifted[综合保本销量])A 占比下降、C 占比上升后加权单位边际贡献从 35 降到 33保本销量从 2000 升到约 2121 件。业务含义很直接低毛利产品卖得越多越需要更大的总销量才能保本。定价会上如果只谈“总销量目标”不谈结构这个坑迟早会踩。4. 用 Python 画保本图并做敏感性分析4.1 保本图的三个关键交点课件里的保本图通常有三条线总收入线、总成本线、固定成本线。三个关键点总收入线与总成本线的交点盈亏平衡点。总收入线与固定成本线的交点收入刚好覆盖固定成本但还没覆盖变动成本。总成本线与纵轴交点固定成本总额。用 matplotlib 画出来比 PPT 截图更能说明问题import numpy as np import matplotlib.pyplot as plt price, unit_vc, fixed_cost 100, 60, 80000 qty np.linspace(0, 4000, 400) revenue price * qty total_cost fixed_cost unit_vc * qty be_qty fixed_cost / (price - unit_vc) plt.figure(figsize(8, 5)) plt.plot(qty, revenue, label总收入) plt.plot(qty, total_cost, label总成本) plt.axhline(fixed_cost, colorgray, linestyle--, label固定成本) plt.axvline(be_qty, colorred, linestyle:, labelf保本点 {be_qty:.0f} 件) plt.fill_between(qty, revenue, total_cost, where(revenue total_cost), alpha0.15, colorgreen, label盈利区) plt.fill_between(qty, revenue, total_cost, where(revenue total_cost), alpha0.15, colorred, label亏损区) plt.xlabel(销量) plt.ylabel(金额) plt.legend() plt.title(本—量—利保本图) plt.show()逻辑说明np.linspace生成销量区间分别算收入和总成本。fill_between用where条件区分盈利区和亏损区比单纯画线直观。axvline标出保本销量。参数说明销量上限要覆盖保本点并留出余量否则图上看不到交点。figsize按输出场景调整放进报告建议 8×5 以上。4.2 单变量敏感性价格、变动成本、固定成本各动 10%敏感性分析回答“哪个参数最要命”。做法是固定其他变量逐个变动 ±10%看保本销量变化幅度def sensitivity(price, unit_vc, fixed_cost, delta0.1): base fixed_cost / (price - unit_vc) rows [] for name, p, v, f in [ (单价 10%, price*(1delta), unit_vc, fixed_cost), (单价 -10%, price*(1-delta), unit_vc, fixed_cost), (单位变动成本 10%, price, unit_vc*(1delta), fixed_cost), (单位变动成本 -10%, price, unit_vc*(1-delta), fixed_cost), (固定成本 10%, price, unit_vc, fixed_cost*(1delta)), (固定成本 -10%, price, unit_vc, fixed_cost*(1-delta)), ]: if p - v 0: rows.append({情景: name, 保本销量: 无解, 变化幅度: -}) continue be f / (p - v) rows.append({情景: name, 保本销量: round(be, 1), 变化幅度: f{(be-base)/base:.1%}}) return rows for r in sensitivity(100, 60, 80000): print(r)逻辑说明每个情景只动一个变量其余保持不变。p - v 0时保本点无解因为边际贡献非正卖多少都亏这种情况要单独标出而不是让程序报错。参数说明delta默认 0.1可以改成 0.05 做更细的扫描。变化幅度以基准保本销量为分母正数表示保本点上升、风险加大。跑出来的典型结果是单价降 10% 对保本点的影响远大于固定成本涨 10%。这解释了为什么定价权比砍固定成本更关键。固定成本是分子单价通过边际贡献影响分母分母变小对结果放大更明显。4.3 多变量情景用循环扫出保本销量矩阵单变量不够用业务里常常是“降价 成本上升”同时发生。用嵌套循环生成矩阵import pandas as pd price_range [95, 100, 105] vc_range [57, 60, 63] fixed 80000 matrix [] for p in price_range: row [] for v in vc_range: row.append(round(fixed / (p - v), 1) if p v else None) matrix.append(row) df pd.DataFrame(matrix, index[f单价{p} for p in price_range], columns[f单位变动成本{v} for v in vc_range]) print(df)逻辑说明外层循环单价内层循环单位变动成本每个格子算一个保本销量。p v的判断防止除零或负数。输出成 DataFrame 后可以直接贴进报告。参数说明price_range和vc_range按业务可能的波动区间设定不要拍脑袋取太宽否则矩阵失去参考意义。固定成本也可以做成第三维但三维以上建议改用热力图。注意敏感性分析的结果依赖基准值。基准单价和单位变动成本如果本身不准整张矩阵都是错的。做之前先核对最近三个月的实际单价和单位变动成本。5. 目标利润反推与安全边际的实战用法5.1 从目标利润倒推销量和单价业务里更常见的问题是“今年要赚 50 万得卖多少”。这就是目标利润销量公式是固定成本 目标利润÷ 单位边际贡献。反过来如果销量被产能锁死可以倒推需要的最低单价def required_price(target_profit, fixed_cost, unit_vc, max_qty): 产能锁定时倒推达到目标利润所需的最低单价 return (fixed_cost target_profit) / max_qty unit_vc print(required_price(target_profit500000, fixed_cost80000, unit_vc60, max_qty20000))逻辑说明把利润等式对单价移项。max_qty是产能上限或预测销量上限。算出来的最低单价要和市场可接受价格对比如果高于市场价说明目标利润在当前成本结构下不可达要么降固定成本要么降单位变动成本。参数说明target_profit是税前目标利润如果公司考核税后利润要先除以1 − 所得税率换算。这一步漏掉会让目标销量偏低。5.2 安全边际率的分档判断安全边际率 实际销量 − 保本销量÷ 实际销量。它衡量“销量下滑多少才会亏”。经验分档安全边际率判断30% 以上较安全抗波动能力强20%30%一般需关注销量趋势10%20%偏低接近警戒线10% 以下危险小幅下滑即亏损这个分档不是绝对标准行业差异很大。重资产行业固定成本高安全边际率普遍偏低轻资产服务行业可以要求更高。关键是和自己的历史值、同行值比而不是套一个固定数字。5.3 用边际贡献率快速判断产品该不该接单特殊订单决策是 CVP 的高频应用对方报价低于正常单价接不接判断标准不是“有没有利润”而是“边际贡献是否为正、是否有闲置产能”。def special_order(price, unit_vc, extra_fixed0, idle_capacityTrue): ucm price - unit_vc if ucm 0: return 拒绝单位边际贡献非正 if not idle_capacity: return 需比较占用正常产能看正常订单边际贡献是否更高 if ucm * 1 - extra_fixed 0: return f可接每件贡献 {ucm} 元扣除专属固定成本后仍为正 return 拒绝扣除专属固定成本后边际贡献为负 print(special_order(price70, unit_vc60, extra_fixed0, idle_capacityTrue))逻辑说明有闲置产能时只要单价高于单位变动成本且能覆盖专属固定成本接单就能增加利润因为共享固定成本已经由正常订单覆盖。没有闲置产能时要比较机会成本。参数说明extra_fixed是该订单专属的固定成本比如专用模具费。idle_capacity表示是否有闲置产能这个判断错了结论会完全相反。5.4 三个最容易算错的参数第一固定成本和变动成本的边界。同一笔费用在不同决策周期里归属不同。比如销售人员的底薪月度看是固定成本年度看可能随人员扩张而变。做 CVP 前先明确决策周期。第二单位变动成本的口径。含税还是不含税、是否包含运费和包装、是否包含销售提成不同口径算出的边际贡献差异很大。统一用不含税、包含所有随销量变动的费用。第三销售组合的稳定性。加权边际贡献率假设销售组合不变实际中组合每月都在漂。建议每月用实际组合重算一次加权单位边际贡献跟踪它的趋势比盯单一产品的保本点更有意义。把这三条做成检查清单每次做 CVP 前过一遍能挡掉大部分“算出来很好看、业务上不成立”的情况。本文还有配套的精品资源点击获取