看到同事用Excel解方程,我再也不敢说自己会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。
也就是总班次为:
=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。
数学中的解方程问题,在 Excel 就是这样做!你 Get 到了嘛!欢迎在留言区中与我交流哦~
想学更多 Excel 技巧,推荐参加我们的《3 天 Excel 集训营》课程!
大神带你学习表格排版布局、数据高效整理、图表美化设计……!!和志同道合的小伙伴一起交流进步~
秋叶《3 天 Excel 集训营》
课程原价 99
但只要你是秋叶 Excel 的粉丝
仅需 3 天你就可能成为 Excel 高手!
赶紧扫码抢课吧!!

*广告