终究没有人在意一家民营企业的生死

去泰国看了一场“成人秀”,画面尴尬到让人窒息.....

【少儿禁】马建《亮出你的舌苔或空空荡荡》

网友建议:远离举报者李X夫!

10部适合女性看的唯美情色电影

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

看到同事用Excel解方程,我再也不敢说自己会Excel了!

小爽 秋叶Excel 2022-06-30
点击蓝字【秋叶 Excel】
发送【计划】
免费领职场人必备计划表模板!


本文作者:小爽
本文审核:玛奇鹅
本文编辑:小胖、竺兰


大家好,我是在搞各种 Excel 「干货」的小爽~

在生产企划中,企业为了生产出符合市场需要或顾客要求的产品,需要提前确定在什么时候进行生产,在哪个车间进行生产,产量多少以及如何生产的问题。

这不,我在群里看到某个小伙伴遇到下面的问题。


他有一个产能为 5000 的订单,预计每个班次可以做 100 个产能,其中:

❶ 总产能数为 5000

❷ 开始日期为 1 月 15 日

❸ 周一到周六,每天为 2 个班次,也就是 200 个产能

❹ 周日为 0.5 个班次,也就是 50 个产能

求完成 5000 个产能的订单,所需要的周期对应的结束日期。

下面我们就用方程思维——单变量求解来解决这个问题。

列方程


首先我们根据问题的需求,列出对应的方程等式。

总产能 = 周一到周六的天数*100(产能/班次)*2 + 周日的天数*100(产能/班次)*0.5


已知订单的总产能数为 5000,现在我们只要求出下面两部分对应的天数,方程也就对应的列出来了。

❶ 开始日期到结束日期之间,周一到周六的天数

❷ 开始日期到结束日期之间,周日的天数


直接写出公式有点难,不过我们可以假设一下结束日期为 3 月 1 日,来倒推一下最终的方程。


我们先来看看,怎么求周一到周六所有的天数?


其实我们可以借助 NETWORKDAYS.INTL 函数求得工作日(周一到周六)的天数,也就是对应的休息日为周日,以上图为例,输入公式:

=NETWORKDAYS.INTL(A2,B2,11)

第三参数为 11,表示休息日仅为周日。


当然,公式也可以输入为:

=NETWORKDAYS.INTL(A2,B2,"0000001")

求出开始日期和结束日期之间周一到周六的天数后,接下来我们就要求周日的天数。

这里我们也可以用 NETWORKDAYS.INTL 函数计算周日(工作日)的天数,则对应的周一到周六为休息日,输入公式为:

=NETWORKDAYS.INTL(A2,B2,"1111110")


简单解释一下 NETWORKDAYS.INTL 函数:

NETWORKDAYS.INTL 函数是 Excel 2010 新出的函数,它比 NETWORKDAYS 函数多了一个 Weekend  参数,用来指定周末日的周末数字或字符串

基本语法:

=NETWORKDAYS.INTL(start_date,end_date,[weekend],[holidays])=NETWORKDAY.INTL(开始日期,结束日期,[休息日参数],[需要排除的节假日日期])
▲ 左右滑动查看

休息日(周末日)参数:


敲黑板:

周末字符串值的长度为七个字符,并且字符串中的每个字符表示一周中的一天(从星期一开始)。

1 表示非工作日,0 表示工作日。在字符串中仅允许使用字符 1 和 0。使用 1111111 将始终返回 0。例如,0000011 结果为星期六和星期日是周末日(休息日)

所以前面求周一到周六的天数,我们可以写成:

=NETWORKDAYS.INTL(A2,B2,11)


=NETWORKDAYS.INTL(A2,B2,"0000001")


由已知条件我们知道:


❶ 周一到周六,每天的班次为 2,每班次的产能为 100,那么也就是对应的产能数为,天数*200;


❷ 周日,每天的班次为 0.5,那么也就是对应的产能数为,天数*50。


总产能 = 周一到周六的天数*200 + 周日的天数*50


也就是总班次为:

=C2*200+D2*50


公式合起来就是:

=NETWORKDAYS.INTL(A2,B2,11)*200+NETWORKDAYS.INTL(A2,B2,"1111110")*50
▲ 左右滑动查看


对应的就是:

总产能=NETWORKDAYS.INTL(开始日期,结束日期,11)*200+NETWORKDAYS.INTL(开始日期,结束日期,"1111110")*50
▲ 左右滑动查看

我们已知的条件有,订单产能数为 5000,开始日期为 1 月 15 日,结束日期未知(未知数设为 x)。

代入数据,也就是对应的方程为:

5000=NETWORKDAYS.INTL("1-15",x,11)*200+NETWORKDAYS.INTL("1-15",x,"1111110")*50
▲ 左右滑动查看

接下来的问题,也就是我们数学上常见的解方程了。
解方程


那么,我们在 Excel 中如何进行解方程呢?

这里就需要用到,【数据】选项卡下的【模拟数据】-【单变量求解】了。

我们先看看单变量求解是用来做什么的:

它通常是被用来进行「逆向模拟分析」的,通俗一点理解就是,求解「单变量方程」的问题——解方程。

比如:求 y=2a+1,已知 y 的值 11,现在要求 a 的值。

我们先将 A2 的单元格的名称设置为 a,B2 为=2a+1。


进行单变量求解:


等待片刻,可以得知当 a=5 时,y=11。

▲ 计算中

是不是很简单?


接下来,我们继续来看看前面案例问题的具体操作!开始解方程!

❶ 自定义名称:


选择 B2 单元格,在名称框输入 x,按【Enter】键,这时候就将结束日期的单元格自定义名称为 x 了。


❷ 将数据代入公式,x 为结束日期:


=NETWORKDAYS.INTL("1-15",x,11)*200+NETWORKDAYS.INTL("1-15",x,"1111110")*50
▲ 左右滑动查看


❸ 设置单因素变量:


选择 B5 单元格-选择【数据】选项卡-【模拟分析】-【单变量求解】。

目标单元格:B5;目标值:5000;可变单元格:B2。

点击【确定】按钮后,等待片刻,最后得出计算结果,当 x 的值为 2 月 11 日时(即结束日期为 2 月 11 日),产能为 5000。


具体的动图效果如下:


当然方法并不只有我这一种,也可以直接利用 VBA 或者 PQ 做循环累加,只不过我觉得列方程,解方程的思维是比较直接!
总结一下


本文介绍了如何利用【单变量求解】,去解决企划中常见的、计算结束日期的问题,整体思路也比较直接,就是根据思路列方程、解方程的过程。

其中涉及到一个 NETWORKDAYS.INTL 函数:


❶ 该函数是用来计算工作日的天数的。


❷ 周末字符串值的长度为七个字符,并且字符串中的每个字符表示一周中的一天(从星期一开始)。1 表示非工作日,0 表示工作日。在字符串中仅允许使用字符 1 和 0。

关于 NETWORKDAYS.INTL 函数的介绍可以戳:
https://mp.weixin.qq.com/s/S9rb4CqftA39SfTrbPBEYw

数学中的解方程问题,在 Excel 就是这样做!你 Get 到了嘛!欢迎在留言区中与我交流哦~
问问大家:你是否在上学的时候,曾被各种各样的解方程问题折磨过?比如很经典的鸡兔同笼问题👀。


笔芯



为感谢同学们对秋叶 Excel 的陪伴和支持,我们决定建立秋叶 Excel 读者群,欢迎大家扫描下方二维码加入哦~

群内不仅能互相交流学习 Excel,还会掉落各种学习资源,助力大家提升办公效率~




↓↓↓


学习指定打卡处~
爱学习,爱分享!

文章有问题?点此查看未经处理的缓存