※ 引述《fuwa ("為什麼"的迷思)》之銘言:
: ※ 引述《JieJuen (David)》之銘言:
: 排交期工作上需要的,就有些製程有固定的完成的天數,我輸入開始做的交期,
: 即可得到想要的完成日期。
了解~感謝
: 比方說,今天2/16,作業需要2天,跳過假日,完成日期就是2/19,以此類推..
: : 抱歉~ 請問"排交期"是什麼
: : 因為根據以下舉例..無法了解 (排日期?)
: : 六 一 三 六 四 五
: : 看不出來是如何跳的
: : (如果是1天是2/18(一)可能好一點理解,左邊加上邊的日數
: : 但上邊不是儲存格....)
: : excel應該不知道哪天是假日..要輸入告知才行
: : ^^^^^^^^^沒見過此函數^^"
: : 排除週日容易
: : B1
: : =A1+IF(WEEKDAY(A1)=7,2,1)
: : 或
: : =A1+1+(WEEKDAY(A1)=7)
: : 參考 4404 (AID): #17VuvDbF
: : 有個函數叫WORKDAY,不一定比較高明,
: : 排除"週末、週日以及假日",
: : 當然假日是要輸入的。
: 抱歉,已修改..
: 雖然B1=A1+IF(WEEKDAY(A1)=7,2,1)、C1=B1+IF(WEEKDAY(B1)=7,2,2)、
A1=2/19 B1=2/20 C1=2/22
: D1=C1+IF(WEEDAY(C1)=7,2,4)是可以符合
D1=2/26 的確符合
若D1=C1+IF(WEEDAY(C1)=7,2,3)
則D1=2/25 ^
: 不過E1=D1+IF(WEEKDAY(D1)=7,2,4)就不符合了..
: 就比如我在A1輸入2/19,B1、C1、D1應該要跑出2/20、2/22、2/26、3/1
3/3 ?(經2/28)
: 不過,用此設定卻是跑出2/20、2/22、2/25、2/29..
依上面公式→ (26)(3/1)
猜測只是筆誤,不過已經了解
(而且我本來不知為此意,故公式非為此而寫,不用管它了)
: 希望大大再解答,謝謝!
自定義的工作日(週六工作,與EXCEL預設不同)本就是一麻煩的問題
網路上可找到寫好的VBA如 (未測試)
http://www.pcmag.com.cn/solution/oa/story/200610/51001121.shtml
可加入假日與非假日,所以將所有週六都加入非假日就可用該函數(...)
或修改該VBA,把排除週六、週日的部分改為週日。
也有考慮春節的公式 http://cn.tech.yahoo.com/060302/548/27tur.html
暫時沒有找到直接符合的方法。
檔案
http://i.am.ntu.googlepages.com/WorkdaySat.xls
結果
A B C D E F G H
1 1 2 3 4 5 6 7
2 2/19 2/20 2/22 2/26 3/4 3/10 3/17 3/25
3 週二 週三 週五 週二 週二 週一 週一 週二
4
5 假日
6 2月28日
7 2月29日
說明
B2
{=SMALL(IF((WEEKDAY(區間)<>1)*ISNA(MATCH(區間,假日,0)),區間),B1+1)}
B2處 "區間"之定義
=A2-1+ROW(OFFSET($1:$1,,,INT(B1*7/5+COUNT(假日)+7)))
^^^^^^^^^^^^^^^^^^^^^^^^^^
此處為開始計算時用的天數
比實際日期長即可,故也可用65535之類的大數字
+1 -1 是為了讓0天可以成立
"假日"定義
=Sheet1!$A$6:$A$7
為檢驗假日處理是否正確,假設2/29亦為假日
第三列純粹看第二列為星期幾
適用性
天數不能為負數,可為0、正數
感想
有誤請指正^^
這題不好寫...頗有集大成之感 XD
用ROW展開日期陣列,用MATCH檢查假日,最後用SMALL(IF())挑第幾天之日期
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.48.133
※ 編輯: JieJuen 來自: 218.164.48.133 (02/16 05:42)
註:更改B2式使巢狀少一層
※ 編輯: JieJuen 來自: 122.123.36.62 (02/16 16:32)
※ 編輯: JieJuen 來自: 59.115.161.2 (11/21 21:47)