Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Power BI 豪华动态盈亏平衡分析

Power BI 豪华动态盈亏平衡分析

作者头像
wujunmin
发布于 2025-03-24 11:26:03
发布于 2025-03-24 11:26:03
10602
代码可运行
举报
文章被收录于专栏:wujunminwujunmin
运行总次数:2
代码可运行

盈亏平衡分析是一种用于确定企业或项目在何时达到收入与成本相等的分析方法。它帮助管理者了解在特定条件下,需要多少销售量或收入才能覆盖所有成本,从而实现盈亏平衡。

盈亏平衡涉及几个关键的概念。

固定成本指不随销量/生产量变动的成本,比如门店租金、员工底薪。

变动成本是随销量/生产量变动的成本,比如商品/原料的采购成本,每多一件就多点进货成本。再比如员工提成,每多销售一件会给员工多发一些工资。同样的成本在不同的企业可能归属不同,比如水电费在零售门店属于固定成本,但在生产企业可能属于变动成本。

总成本是固定成本和变动成本之和。

总收入是销售产品产生的收入。

盈亏平衡点是总收入等于总成本时的销售量或收入。

在Power BI可以不使用外部数据源,通过控制固定成本、单位变动成本、单位售价三个参数进行动态盈亏平衡分析。

上图输入三个参数后,点击生成分析图表按钮,即可生成图表展示不同销量的收入、成本、利润状况,并突出显示盈亏平衡点。最下方有文字说明列出所有关键信息。视频操作演示:

整个模型使用一个HTML度量值生成,度量值如下,放入HTML Content视觉对象即可正常显示:

代码语言:javascript
代码运行次数:2
运行
AI代码解释
复制
HTML= 
"<!DOCTYPE html>
<html lang='zh-CN'>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>盈亏平衡分析图表</title>
    <script src='https://code.highcharts.com/highcharts.js'></script>
    <style>
        body {
            font-family: 'Microsoft YaHei', Arial, sans-serif;
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            margin: 0;
            padding: 0;
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .container {
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
            padding: 30px;
            width: 90%;
            max-width: 1000px;
            margin: 20px auto;
        }
        /* 其他CSS样式保持不变 */
        h1 {
            text-align: center;
            color: #3a4a6d;
            margin-bottom: 30px;
            font-size: 2.2rem;
            text-shadow: 1px 1px 2px rgba(0,0,0,0.1);
        }
        .input-section {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            margin-bottom: 30px;
            justify-content: center;
        }
        .input-group {
            flex: 1;
            min-width: 200px;
        }
        label {
            display: block;
            margin-bottom: 8px;
            color: #3a4a6d;
            font-weight: bold;
        }
        input {
            width: 100%;
            padding: 12px;
            border: 2px solid #c3cfe2;
            border-radius: 8px;
            font-size: 16px;
            transition: border-color 0.3s;
        }
        input:focus {
            border-color: #3a4a6d;
            outline: none;
        }
        button {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border: none;
            padding: 12px 25px;
            border-radius: 8px;
            cursor: pointer;
            font-size: 16px;
            font-weight: bold;
            transition: transform 0.2s, box-shadow 0.2s;
            margin: 0 auto;
            display: block;
        }
        button:hover {
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
        }
        .chart-container {
            position: relative;
            margin: 20px auto;
            height: 400px;
        }
        .results {
            background-color: #f0f4f8;
            padding: 20px;
            border-radius: 10px;
            margin-top: 30px;
        }
        .result-item {
            margin-bottom: 10px;
            font-size: 18px;
            color: #3a4a6d;
        }
        .highlight {
            font-weight: bold;
            color: #764ba2;
        }
        .legend {
            display: flex;
            justify-content: center;
            margin-top: 20px;
            flex-wrap: wrap;
            gap: 20px;
        }
        .legend-item {
            display: flex;
            align-items: center;
            margin-right: 15px;
        }
        .legend-color {
            width: 20px;
            height: 20px;
            margin-right: 8px;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <div class='container'>
        <h1>盈亏平衡分析模型</h1>
        
        <div class='input-section'>
            <div class='input-group'>
                <label for='fixedCost'>固定成本 ()</label>
                <input type='number' id='fixedCost' value='100000' min='0'>
            </div>
            <div class='input-group'>
                <label for='variableCost'>单位变动成本 ()</label>
                <input type='number' id='variableCost' value='50' min='0'>
            </div>
            <div class='input-group'>
                <label for='sellingPrice'>单位售价 ()</label>
                <input type='number' id='sellingPrice' value='100' min='0'>
            </div>
        </div>
        
        <button onclick='calculateAndDraw()'>生成分析图表</button>
        
        <div class='chart-container' id='breakEvenChart'>
            <!-- Highcharts将在这里渲染 -->
        </div>
        
        <div class='legend'>
            <div class='legend-item'>
                <div class='legend-color' style='background-color: #FF6384;'></div>
                <span>总成本</span>
            </div>
            <div class='legend-item'>
                <div class='legend-color' style='background-color: #36A2EB;'></div>
                <span>总收入</span>
            </div>
            <div class='legend-item'>
                <div class='legend-color' style='background-color: #4BC0C0;'></div>
                <span>固定成本</span>
            </div>
            <div class='legend-item'>
                <div class='legend-color' style='background-color: #9966FF;'></div>
                <span>利润/亏损</span>
            </div>
        </div>
        
        <div class='results' id='results'>
            <div class='result-item'>请输入参数并点击'生成分析图表'按钮查看结果。</div>
        </div>
    </div>
    <script>
        let chart = null;
        
        function calculateAndDraw() {
            const fixedCost = parseFloat(document.getElementById('fixedCost').value);
            const variableCost = parseFloat(document.getElementById('variableCost').value);
            const sellingPrice = parseFloat(document.getElementById('sellingPrice').value);
            
            // 验证输入
            if (isNaN(fixedCost) || isNaN(variableCost) || isNaN(sellingPrice)) {
                alert('请输入有效的数字');
                return;
            }
            
            if (sellingPrice <= variableCost) {
                alert('单位售价必须大于单位变动成本才能达到盈亏平衡');
                return;
            }
            
            // 计算盈亏平衡点
            const breakEvenPoint = fixedCost / (sellingPrice - variableCost);
            const breakEvenRevenue = breakEvenPoint * sellingPrice;
            
            // 为图表准备数据
            const maxUnits = Math.ceil(breakEvenPoint * 2);
            const step = Math.ceil(maxUnits / 20);
            
            const units = [];
            const totalRevenue = [];
            const totalCost = [];
            const fixedCostLine = [];
            const profitLoss = [];
            
            for (let i = 0; i <= maxUnits; i += step) {
                units.push(i);
                const revenue = i * sellingPrice;
                const cost = fixedCost + (i * variableCost);
                
                totalRevenue.push([i, revenue]);
                totalCost.push([i, cost]);
                fixedCostLine.push([i, fixedCost]);
                profitLoss.push([i, revenue - cost]);
            }
            
            // 使用Highcharts绘制图表
            chart = Highcharts.chart('breakEvenChart', {
                title: {
                    text: '盈亏平衡图',
                    style: {
                        fontSize: '18px',
                        fontWeight: 'bold',
                        color: '#3a4a6d'
                    }
                },
                xAxis: {
                    title: {
                        text: '销售数量 (单位)',
                        style: {
                            fontWeight: 'bold'
                        }
                    },
                    labels: {
                        formatter: function() {
                            return this.value.toLocaleString();
                        }
                    },
                    plotLines: [{
                        value: breakEvenPoint,
                        color: 'rgba(255, 0, 0, 0.5)',
                        width: 2,
                        dashStyle: 'Dash',
                        label: {
                            text: '盈亏平衡点',
                            align: 'center',
                            style: {
                                color: 'red',
                                fontWeight: 'bold'
                            }
                        }
                    }]
                },
                yAxis: {
                    title: {
                        text: '金额 (元)',
                        style: {
                            fontWeight: 'bold'
                        }
                    },
                    labels: {
                        formatter: function() {
                            return this.value.toLocaleString() + '元';
                        }
                    }
                },
                tooltip: {
                    formatter: function() {
                        return '<b>' + this.series.name + '</b><br/>' +
                               '销售数量: ' + this.x.toLocaleString() + ' 单位<br/>' +
                               '金额: ' + this.y.toLocaleString() + ' 元';
                    }
                },
                legend: {
                    enabled: false // 使用自定义图例
                },
                series: [{
                    name: '总成本',
                    data: totalCost,
                    color: '#FF6384',
                    lineWidth: 3
                }, {
                    name: '总收入',
                    data: totalRevenue,
                    color: '#36A2EB',
                    lineWidth: 3
                }, {
                    name: '固定成本',
                    data: fixedCostLine,
                    color: '#4BC0C0',
                    lineWidth: 3,
                    dashStyle: 'Dash'
                }, {
                    name: '利润/亏损',
                    data: profitLoss,
                    color: '#9966FF',
                    lineWidth: 3
                }],
                credits: {
                    enabled: false // 移除Highcharts水印
                },
                responsive: {
                    rules: [{
                        condition: {
                            maxWidth: 500
                        },
                        chartOptions: {
                            legend: {
                                layout: 'horizontal',
                                align: 'center',
                                verticalAlign: 'bottom'
                            }
                        }
                    }]
                }
            });
            
            // 显示结果
            const resultsDiv = document.getElementById('results');
            resultsDiv.innerHTML = `
                <div class='result-item'>固定成本: <span class='highlight'>${fixedCost.toLocaleString()}元</span></div>
                <div class='result-item'>单位变动成本: <span class='highlight'>${variableCost.toLocaleString()}元</span></div>
                <div class='result-item'>单位售价: <span class='highlight'>${sellingPrice.toLocaleString()}元</span></div>
                <div class='result-item'>单位贡献毛利: <span class='highlight'>${(sellingPrice - variableCost).toLocaleString()}元</span></div>
                <div class='result-item'>盈亏平衡点 (销售数量): <span class='highlight'>${Math.ceil(breakEvenPoint).toLocaleString()}单位</span></div>
                <div class='result-item'>盈亏平衡点 (销售收入): <span class='highlight'>${Math.ceil(breakEvenRevenue).toLocaleString()}元</span></div>
                <div class='result-item'>安全边际率: <span class='highlight'>${((maxUnits - breakEvenPoint) / maxUnits * 100).toFixed(2)}%</span></div>
            `;
        }
        
        // 页面加载时自动生成图表
        window.onload = calculateAndDraw;
    </script>
</body>
</html>"

如有样式调整的需求,可以把代码甩给AI进行修改,以下换了一种风格:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 wujunmin 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在线动态盈亏平衡分析工具
盈亏平衡分析是一种用于确定企业或项目在何时达到收入与成本相等的分析方法。它帮助管理者了解在特定条件下,需要多少销售量或收入才能覆盖所有成本,从而实现盈亏平衡。
wujunmin
2025/05/13
330
在线动态盈亏平衡分析工具
Vue 项目中 TinyMCE 富文本编辑器的具体使用方法
TinyMCE是一款功能强大、高度可定制的富文本编辑器,被广泛应用于各种Web应用中。在Vue项目中集成TinyMCE可以为用户提供专业的文本编辑体验。本文将详细介绍如何在Vue项目中使用TinyMCE,并提供完整的应用实例。
用户2102001
2025/05/22
1690
Vue 项目中 TinyMCE 富文本编辑器的具体使用方法
【CodeBuddy】三分钟开发一个实用小功能之:字体阴影实时预览工具
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接: 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
Jimaks
2025/05/21
640
【CodeBuddy】三分钟开发一个实用小功能之:字体阴影实时预览工具
Power BI 豪华动态业绩杜邦分析
杜邦分析法(DuPont analysis)是一种分析企业财务状况的方法,得名于美国杜邦公司。该思路可以应用于销售业绩分析。如下图模拟杜邦分析图对门店零售业务的业绩进行分解(参考:黄成明老师的《数据化管理》)
wujunmin
2025/03/18
1090
Power BI 豪华动态业绩杜邦分析
vue-next-admin可视化demo2 三维地球
演示地址: https://lyt-top.gitee.io/vue-next-admin-preview/#/visualizingDemo2 演示效果: 代码: <template> <div class="visualizing-demo2"> <!-- 顶部 --> <div class="big-data-up"> <div class="up-left"> <i class="el-icon-time mr5"></i> <sp
周星星9527
2021/11/03
9430
vue-next-admin可视化demo2 三维地球
【经典】高级动态抽奖系统(HTML,CSS、JS)
命运之光
2024/11/26
5370
【经典】高级动态抽奖系统(HTML,CSS、JS)
【Vue】day03-VueCli(脚手架)
思考:什么时候可以发送初始化渲染请求?(越早越好)什么时候可以开始操作dom?(至少dom得渲染出来)
陶然同学
2023/10/14
2500
【Vue】day03-VueCli(脚手架)
4.5 PowerBI分析模板-多产品盈亏平衡分析
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/26
1570
4.5 PowerBI分析模板-多产品盈亏平衡分析
制作自己的“疫情地图”
布局采用一张图的思路,将疫情信息以浮动框的形式飘在地图上,分别为:图例,置于左下角;统计数据,置于右下角;汇总数据以及数据源说明,置于右上角;左上角区域,添加地图说明。
牛老师讲GIS
2020/02/20
2.6K0
VUE实现一个购物车
想象每个组件都分别为家中的成员:爸爸、妈妈、孩子们。但是,作为一个家庭,他们需要共享状态。在这个家庭中,充当看家狗的Vuex就是来帮助我们解决问题的。
HelloWorldZ
2024/03/20
2060
VUE实现一个购物车
React大法:如何轻松编写动态PDF文件
在本文中,我们将学习如何通过接受用户的输入来生成动态 PDF。一些用例包括根据收到的数据生成invoices、certificates、resumes、等。reports
zayyo
2023/10/04
8591
【Vue】day02-Vue基础入门
所谓指令修饰符就是通过“.”指明一些指令后缀 不同的后缀封装了不同的处理操作 —> 简化代码
陶然同学
2023/10/14
2720
【Vue】day02-Vue基础入门
vue-d2admin前端axio异步请求详情
vue-d2admin前端axio异步请求详情 d2admin>src>api>sys.login.js 设计axio api import request from '@/plugin/axios' export function AccountLogin (data) { return request({ url: '/login', method: 'post', data }) } d2admin>src>store>d2admin>modules>account.
landv
2019/07/02
1.2K0
【愚公系列】《AIGC辅助软件开发》007-面向软件开发的提示工程:写Prompt就是逐步明确需求的过程
文章链接:https://cloud.tencent.com/developer/article/2332111
愚公搬代码
2024/11/20
1130
CSS 入门指南:轻松掌握网页布局与样式设计的艺术
CSS(Cascading Style Sheets,层叠样式表)是一种用于为HTML元素添加样式的语言。CSS决定了页面上元素的外观:颜色、字体、布局等。
方才编程_公众号同名
2024/09/24
4340
CSS 入门指南:轻松掌握网页布局与样式设计的艺术
大转盘设置漂浮物
大转盘.jpg 选择漂浮物.jpg <!--大转盘--> <div class="shareLeft"> <div class="sharePosition"> <div class="shareBigTitle"> 幸运大转盘 </div> </div> <div class="shareBg"> </div> <div class="shareInside"> <div class="
lyudev
2022/08/04
2.2K0
大转盘设置漂浮物
【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(四) -> 常见组件(一)
List是用来显示列表的组件,包含一系列相同宽度的列表项,适合连续、多行地呈现同类数据。
枫叶丹
2025/02/06
690
【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(四) -> 常见组件(一)
React markdown发布文章后展示[2]
highlight: a11y-dark theme: channing-cyan
用户4793865
2023/02/03
5100
被问爆的旅游网页!cursor + 腾讯云 Edge MCP + 高德地图MCP2.0,圆你一个沉浸式旅行梦
作为一个想打造旅游网页的 “技术小白”,我曾无数次被复杂的代码折磨到崩溃,在寻找稳定服务器资源时焦头烂额,更因地图数据接入的繁琐流程屡屡碰壁。想要呈现出集导航、景点推荐、行程规划于一体的旅游网页,仅凭一己之力,几乎是不可能完成的任务。直到遇见 cursor、腾讯云 Edge MCP 和高德地图 MCP2.0,我的困境才迎来转机 —— 它们就像为我量身定制的 “救星”,以各自的强大功能,填补了我技术与资源上的所有缺口,让梦想中的旅游网页从空想变为现实。
Undoom
2025/05/09
2250
饮水小贴士应用 - 功能清单
"饮水小贴士"应用通过智能化、个性化的方式引导公众建立科学饮水习惯,具有深远的社会意义。在当前快节奏生活方式下,饮水不足已成为导致多种慢性疾病的隐形因素,从头痛、疲劳到肾脏问题,影响着民众健康与生活质量。
红目香薰
2025/03/14
700
饮水小贴士应用 - 功能清单
推荐阅读
相关推荐
在线动态盈亏平衡分析工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验