作者JieJuen (David)
看板Office
标题Re: [算表] 排交期的问题 (非常危急 请大大协助)
时间Mon Nov 21 23:20:29 2011
感谢板友卓越的思维提出了简明的解答
我发现自己在2008年曾写过一相关的公式
┌─────────────────────────────────────┐
│ 文章代码(AID):
#17jWHoY0 (Office) [ptt.cc] [算表] EXCEL:扣除"周日与假日" │
│ 文章网址:
http://webptt.com/cn.aspx?n=bbs/Office/M.1203111026.A.880.html │
└─────────────────────────────────────┘
内容早忘了,复习了一下,
功能如标题是扣除周日以及假日,
就其中周日的部分,是使用
(WEEKDAY(区间)<>1)
因此可以随意调整休息日,例如
(ISERROR(FIND(WEEKDAY(区间),"1"))) 是周日
(ISERROR(FIND(WEEKDAY(区间),"14"))) 是三日
因此结论是该功能为可扣除任意组合的休息日,与假日
而上述功能已在2010版有加入,说明档贴上供参
http://office.microsoft.com/zh-tw/excel-help/HA010354380.aspx
WORKDAY.INTL 函数
会使用自订 weekend 参数传回指定工作天数之前或之後日期的序列值。Weekend 参数指
出哪天和多少天是工作天。指定为假日的周末日和任何日子都不视为周末。
语法
WORKDAY.INTL(start_date, days, [weekend], [holidays])
WORKDAY.INTL 函数语法具有下列引数:
Start_date 必要。这是取为整数的开始日期。
Days 必要。这是 start_date 之前或之後的工作天数。正值表示未来日期;负值表示
过去日期;零表示 start_date。Day-offset 会取为整数。
Weekend 选用。指出一周中属於周末而不视为工作天的日子。Weekend 是指定周末发生
时的周末数字或字串。
Weekend 编号值 周末日
1 或省略 星期六、星期日
2 星期日、星期一
3 星期一、星期二
4 星期二、星期三
5 星期三、星期四
6 星期四、星期五
7 星期五、星期六
11 仅星期日
12 仅星期一
13 仅星期二
14 仅星期三
15 仅星期四
16 仅星期五
17 仅星期六
Weekend 字串值长度为七个字元,且字串中每个字元会代表一周内的一天,从星期一开始
。1 代表非工作日,而 0 代表工作日。字串中仅允许字元 1 和 0。1111111 是无效字元
。
例如,0000011 会产生包含星期六和星期日的周末。
Holidays 选用。这是要从工作日行事历排除的一组选择性的一个或多个日期。
Holidays 应为包含日期的储存格范围,或是代表这些日期之序列值的阵列常数。
Holidays 中的日期或序列值顺序可以任意排列。
注解
如果 start_date 在目前日期准值的范围之外,WORKDAY.INTL 会传回 #NUM! 错误值。
如果 holidays 中任何日期在目前日期准值的范围之外,WORKDAY.INTL 会传回 #NUM! 错
误值。
如果 start_date 加上 day-offset 的结果不是有效日期,WORKDAY.INTL 会传回 #NUM!
错误值。
如果 weekend 字串是无效长度或包含无效字元,WORKDAY.INTL 会传回 #VALUE! 错误值
。
范例
公式 描述
=WORKDAY.INTL(DATE(2006,1,1),0) 会传回对应於 2006 年 1 月 1 日的序列值。
=WORKDAY.INTL(DATE(2006,1,1),10) 会传回对应於 2006 年 1 月 13 日的序列值。
=WORKDAY.INTL(DATE(2006,1,1),10,7) 会传回对应於 2006 年 1 月 15 日的序列值。
=WORKDAY.INTL(DATE(2006,1,1),-10) 会传回对应於 2005 年 12 月 19 日的序列值。
=WORKDAY.INTL(DATE(2006,1,1),20,1,{"2006/1/2","2006/1/16"})
会传回对应於 2006 年 1 月 31 日的序列值。
=WORKDAY.INTL(DATE(2006,1,1),20,"0000011",{"2006/1/2","2006/1/16"})
会传回对应於 2006 年 1 月 31 日的序列值。
秘诀 在 Excel 桌上型应用程式中,若要将传回的数字设定为日期格式,请选取该数
字,然後在 [常用] 索引标签上的 [数值] 群组中按一下对话方块启动器 。在 [数值]
索引标签上的 [类别] 清单中按一下 [日期],然後按一下 [类型] 清单中您所要的日期
格式。在 Excel Web App 中,若要用日期格式检视结果,请选取储存格,然後在 [常用
] 索引标签的 [数值] 群组中,按一下 [数值格式] 旁的箭号,再按一下 [简短日期] 或
[详细日期]。
※ 引述《Bolty ( )》之铭言:
: A B C
: 1 开始日 工作天 完成日 (完成日若出现纯数字,请将储存格格式设为日期)
: 2 2011/11/1 15 =A2+B2+INT((B2-8+WEEKDAY(A2))/6)+1
: 希望可以帮你度过难关,有问题再提出来吧。
: ※ 引述《sk8erboi0403 ( 踟蹰)》之铭言:
: : 软体:excel
: : 版本:2000 (真的无法完成2007亦可)
: : 各位大大好:
: : 小弟人在国外 需要一个排交期的程式
: : 不知有没有大大可以解答
: : 假设2011/11/1是开始日 假设工作需要15个工作天 会跨过两个周日
: : 有没有能够扣掉周日 在另一格计算出完成日期的函数或计算方式?
: : 补充说明一下 小弟在越南工作 越南的假日只有周日一天
: : 所以像是这个例题的话 解答应该是 11/1 +15天=11/16
: : 又要在加上跨过的两个周日 11/16+ 2天=11/18
: : 小弟虽然人在国外 但倘若大大帮忙 我会请国内的朋友重重酬谢
: : (如果没有这个公式 我很有可能打包回家 感谢大大的协助 再次感谢!!)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.161.2
※ 编辑: JieJuen 来自: 59.115.161.2 (11/21 23:21)