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

大家好,我是在搞各種 Excel 「干貨」的小爽~
在生產(chǎn)企劃中,企業(yè)為了生產(chǎn)出符合市場需要或顧客要求的產(chǎn)品,需要提前確定在什么時候進行生產(chǎn),在哪個車間進行生產(chǎn),產(chǎn)量多少以及如何生產(chǎn)的問題。
這不,我在群里看到某個小伙伴遇到下面的問題。

他有一個產(chǎn)能為 5000 的訂單,預(yù)計每個班次可以做 100 個產(chǎn)能,其中:
??總產(chǎn)能數(shù)為 5000
??開始日期為 1 月 15 日
? 周一到周六,每天為 2 個班次,也就是 200 個產(chǎn)能
? 周日為 0.5 個班次,也就是 50 個產(chǎn)能
求完成 5000 個產(chǎn)能的訂單,所需要的周期對應(yīng)的結(jié)束日期。
下面我們就用方程思維——單變量求解來解決這個問題。

列方程
首先我們根據(jù)問題的需求,列出對應(yīng)的方程等式。
總產(chǎn)能?=?周一到周六的天數(shù)*100(產(chǎn)能/班次)*2?+?周日的天數(shù)*100(產(chǎn)能/班次)*0.5
已知訂單的總產(chǎn)能數(shù)為 5000,現(xiàn)在我們只要求出下面兩部分對應(yīng)的天數(shù),方程也就對應(yīng)的列出來了。
??開始日期到結(jié)束日期之間,周一到周六的天數(shù)??開始日期到結(jié)束日期之間,周日的天數(shù)
直接寫出公式有點難,不過我們可以假設(shè)一下結(jié)束日期為 3 月 1 日,來倒推一下最終的方程。

我們先來看看,怎么求周一到周六所有的天數(shù)?
其實我們可以借助?NETWORKDAYS.INTL 函數(shù)求得工作日(周一到周六)的天數(shù),也就是對應(yīng)的休息日為周日,以上圖為例,輸入公式:
=NETWORKDAYS.INTL(A2,B2,11)
第三參數(shù)為 11,表示休息日僅為周日。

當然,公式也可以輸入為:
=NETWORKDAYS.INTL(A2,B2,"0000001")
求出開始日期和結(jié)束日期之間周一到周六的天數(shù)后,接下來我們就要求周日的天數(shù)。
這里我們也可以用 NETWORKDAYS.INTL 函數(shù)計算周日(工作日)的天數(shù),則對應(yīng)的周一到周六為休息日,輸入公式為:
=NETWORKDAYS.INTL(A2,B2,"1111110")

簡單解釋一下 NETWORKDAYS.INTL 函數(shù):
NETWORKDAYS.INTL 函數(shù)是 Excel 2010 新出的函數(shù),它比 NETWORKDAYS 函數(shù)多了一個 Weekend ?參數(shù),用來指定周末日的周末數(shù)字或字符串。
基本語法:
=NETWORKDAYS.INTL(start_date,end_date,[weekend],[holidays])
=NETWORKDAY.INTL(開始日期,結(jié)束日期,[休息日參數(shù)],[需要排除的節(jié)假日日期])

敲黑板:
周末字符串值的長度為七個字符,并且字符串中的每個字符表示一周中的一天(從星期一開始)。
1 表示非工作日,0 表示工作日。
在字符串中僅允許使用字符 1 和 0。使用 1111111 將始終返回 0。例如,0000011 結(jié)果為星期六和星期日是周末日(休息日)。
所以前面求周一到周六的天數(shù),我們可以寫成:
=NETWORKDAYS.INTL(A2,B2,11)
=NETWORKDAYS.INTL(A2,B2,"0000001")
? 周一到周六,每天的班次為 2,每班次的產(chǎn)能為 100,那么也就是對應(yīng)的產(chǎn)能數(shù)為,天數(shù)*200;
??周日,每天的班次為 0.5,那么也就是對應(yīng)的產(chǎn)能數(shù)為,天數(shù)*50。
也就是總班次為:
=C2*200+D2*50

公式合起來就是:
=NETWORKDAYS.INTL(A2,B2,11)*200+NETWORKDAYS.INTL(A2,B2,"1111110")*50

總產(chǎn)能=NETWORKDAYS.INTL(開始日期,結(jié)束日期,11)*200+NETWORKDAYS.INTL(開始日期,結(jié)束日期,"1111110")*50
我們已知的條件有,訂單產(chǎn)能數(shù)為 5000,開始日期為 1 月 15 日,結(jié)束日期未知(未知數(shù)設(shè)為 x)。
代入數(shù)據(jù),也就是對應(yīng)的方程為:
5000=NETWORKDAYS.INTL("1-15",x,11)*200+NETWORKDAYS.INTL("1-15",x,"1111110")*50
接下來的問題,也就是我們數(shù)學(xué)上常見的解方程了。

解方程
那么,我們在 Excel 中如何進行解方程呢?
這里就需要用到,【數(shù)據(jù)】選項卡下的【模擬數(shù)據(jù)】-【單變量求解】了。
我們先看看單變量求解是用來做什么的:
它通常是被用來進行「逆向模擬分析」的,通俗一點理解就是,求解「單變量方程」的問題——解方程。
比如:求 y=2a+1,已知 y 的值 11,現(xiàn)在要求 a 的值。
我們先將 A2 的單元格的名稱設(shè)置為 a,B2 為=2a+1。

進行單變量求解:

等待片刻,可以得知當 a=5 時,y=11。

▲ 計算中
是不是很簡單?

接下來,我們繼續(xù)來看看前面案例問題的具體操作!開始解方程!
??自定義名稱:
選擇 B2 單元格,在名稱框輸入 x,按【Enter】鍵,這時候就將結(jié)束日期的單元格自定義名稱為 x 了。

??將數(shù)據(jù)代入公式,x 為結(jié)束日期:
=NETWORKDAYS.INTL("1-15",x,11)*200+NETWORKDAYS.INTL("1-15",x,"1111110")*50

??設(shè)置單因素變量:
選擇 B5 單元格-選擇【數(shù)據(jù)】選項卡-【模擬分析】-【單變量求解】。
目標單元格:B5;目標值:5000;可變單元格:B2。
點擊【確定】按鈕后,等待片刻,最后得出計算結(jié)果,當 x 的值為 2 月 11 日時(即結(jié)束日期為 2 月 11 日),產(chǎn)能為 5000。

具體的動圖效果如下:

當然方法并不只有我這一種,也可以直接利用 VBA 或者 PQ 做循環(huán)累加,只不過我覺得列方程,解方程的思維是比較直接!

總結(jié)一下
本文介紹了如何利用【單變量求解】,去解決企劃中常見的、計算結(jié)束日期的問題,整體思路也比較直接,就是根據(jù)思路列方程、解方程的過程。
其中涉及到一個 NETWORKDAYS.INTL 函數(shù):
??該函數(shù)是用來計算工作日的天數(shù)的。
??周末字符串值的長度為七個字符,并且字符串中的每個字符表示一周中的一天(從星期一開始)。1 表示非工作日,0 表示工作日。在字符串中僅允許使用字符 1 和 0。
數(shù)學(xué)中的解方程問題,在 Excel 就是這樣做!你 Get 到了嘛!歡迎在留言區(qū)中與我交流哦~
想學(xué)更多 Excel 技巧,推薦參加我們的《3 天 Excel 集訓(xùn)營》課程!
大神帶你學(xué)習(xí)表格排版布局、數(shù)據(jù)高效整理、圖表美化設(shè)計……?。『椭就篮系男』锇橐黄鸾涣鬟M步~
秋葉《3 天 Excel 集訓(xùn)營》
課程原價?99?
但只要你是秋葉 Excel 的粉絲
僅需 3 天你就可能成為 Excel 高手!
趕緊掃碼搶課吧??!

*廣告