【发布时间】:2015-06-03 23:04:09
【问题描述】:
我在 H10 列中有一个日期,需要在下一列 I 中为该日期添加 45 天
- 如果没有日期列 I 必须为空
- 如果第 45 天是周末,则计算必须移至下一个工作日,即星期一
【问题讨论】:
我在 H10 列中有一个日期,需要在下一列 I 中为该日期添加 45 天
【问题讨论】:
您需要结合两个基本功能。
首先,DATE + INT = DATE。例如,如果 H10 = 1/8/2015 和 H11 = H10 + 10 则 H11 将显示 1/18/2015。
在你的情况下,你想使用H10 + 45。
其次,您可以使用Weekday(date,mode) 函数来确定星期几。就个人而言,出于您的目的,您可以使用weekday(h10 + 45, 2),这将为 MTWRF 提供 1-5 分,为周末提供 6-7 分。所以像
=if(weekday(h10+45,2) < 6, "weekday", "weekend")
=if(weekday(h10+45,2) = 1, "Monday!!", "not monday...")
但我们还没有完成 - 您需要确保您的一天实际上在工作日结束。所以我们可以做这样的事情——在确定工作日时,我们可以使用它来确定我们需要添加多少。如果我们最终得到 6(星期六),我们希望增加 2 天以将其推至星期一。在 7 的情况下,我们想增加 1 天以将其推到星期一。因此,我们可以简单地将8 - weekday(h10+45) 添加到工作日。所以我们的增值就变成了
// determine day type weekday weekend, so add the offset
= if(weekday(h10+45) < 5, h10+45, h10 + 45 + (8 - weekday(h10+45))
你也有空白的要求,所以你需要包装你使用的任何东西
=if(isblank(h10),"", /* your real function here */)
【讨论】:
您可以结合使用 IF()、WEEKDAY() 和 WORKDAY() 的函数来计算您的完成日期并确保它不会落在周末。
我用过
WEEKDAY(WORKDAY(H10+45),16)
将星期六和星期日分别表示为第 1 天和第 2 天。
IF(WEEKDAY(WORKDAY(H10,45),16)=1,WORKDAY(H10,45)+2,IF(WEEKDAY(WORKDAY(H10,45),16)=2,WORKDAY(H10,46),H10))
【讨论】: