分享

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

 成已成物 2021-03-30
发送【计划】
图片

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


大家好,我是在搞各种 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,还会掉落各种学习资源,助力大家提升办公效率~图片



图片

图片
图片
图片
图片
图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多