作者JieJuen (David)
看板Office
标题Re: [问题]excel 排交期的函数设定?
时间Sat Feb 16 05:30:23 2008
※ 引述《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)
1F:→ JieJuen:更新档案连结.後续见系列 #1Eocn1bU [算表] 排交期的问题 11/21 23:33