4

我在 excel 2010 中有一个作业列表。每个作业都有一个截止日期。作业必须在截止日期前 3 个工作日提交外部处理。在将作业发送到外部处理之前,必须对其进行审核。提交审查的时间为周一和周三。

我想要一个函数来查看截止日期单元格中的日期,并返回该日期前 3 个工作日之前的星期一或星期三(更接近)的日期;

X =(截止日期前 3 个工作日)

提交日期 =(X 之前的星期一或星期三)

我因此得到X;=WORKDAY.INTL(<due date cell>,-3)

现在我只需要代码即可到达提交日期。

4

2 回答 2

2

好的,我尝试在没有巨大的 IF() 语句的情况下执行此操作,但这有效。您的日期在 A1 中,您下面的提交日期公式在 B1 中。

=IF(WEEKDAY(A1)=1,A1-6,IF(WEEKDAY(A1)=2,A1-7,IF(WEEKDAY(A1)=3,A1-6,IF(WEEKDAY(A1)=4,A1-7,IF(WEEKDAY(A1)=5,A1-8,IF(WEEKDAY(A1)=6,A1-4,IF(WEEKDAY(A1)=7,A1-5)))))))

我所做的几乎就是当你减去至少 3 个工作日然后再减去更多天直到你到达星期三或星期一时,我计算出从每个到期日中减去多少天。当你的...

  • 到期日; 然后(减去天数以获得所需的周一或周三提交日期)
  • 星期日; 然后-6
  • 周一; 然后-7
  • 周二; 然后-6
  • 周三; 然后-7
  • 周四; 然后-8
  • 星期五; 然后-4
  • 周六; 然后-5

希望这可以帮助。

-Scheballs

必须是周一或周三

编辑

感谢 Barry Houdini 向我展示了 CHOOSE() 函数。

=A2-CHOOSE(WEEKDAY(A2),6,7,6,7,8,4,5)

几乎一旦您找到了从一周中的一天中减去的天数所需的偏移量,您就可以使用 WEEKDAY 值作为选项列表中的位置。因此,如果我们的工作日到期日是星期日,即“1”,然后我们的选择功能选项列表,则选择第一个。然后我们的截止日期减去该值。非常好的巴里,谢谢。

于 2013-05-13T18:35:28.290 回答
2

如果您的截止日期是星期一,那么在此之前的 3 个工作日是前一个星期三,那么您可以在星期三进行审查,还是需要在此之前的星期一?如果是后者,那么您可以使用WORKDAYWORKDAY.INTL像这样假设 A2 中的截止日期

=WORKDAY.INTL(WORKDAY(A2,-3),-1,"0101111")

如果是前者,那么只需将 -3 变为 -2

使用这种方法,您可以使用 WORKDAY 退回 2 或 3 个工作日,然后 WORKDAY.INTL 使用“0101111”表示周一和周三的工作日,并在此基础上再减去一天

此方法可用于任意天数 - 后一个数字始终保持为 -1

于 2013-05-13T19:28:03.827 回答