欢迎光临散文网 会员登陆 & 注册

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

2023-07-18 08:26 作者:秋叶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。


数学中的解方程问题,在 Excel 就是这样做!你 Get 到了嘛!欢迎在留言区中与我交流哦~

想学更多 Excel 技巧,推荐参加我们的《3 天 Excel 集训营》课程!


大神带你学习表格排版布局、数据高效整理、图表美化设计……!!和志同道合的小伙伴一起交流进步~


秋叶《3 天 Excel 集训营》

课程原价 99 

但只要你是秋叶 Excel 的粉丝

仅需 3 天你就可能成为 Excel 高手!

赶紧扫码抢课吧!!

*广告


看到同事用Excel解方程,我再也不敢说自己会Excel了!的评论 (共 条)

分享到微博请遵守国家法律