【问题标题】:find the Monday or Wednsday before a date in excel在excel中查找日期之前的星期一或星期三
【发布时间】:2013-05-07 18:33:08
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: excel date dayofweek


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案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”,然后我们的选择函数选项列表,则选择第一个。然后我们的截止日期减去该值。 非常好的巴里,谢谢。

      【讨论】:

      • +1 @Scheballs - 对我有用 - 你可以使用 CHOOSE 函数缩短,即=A1-CHOOSE(WEEKDAY(A1),6,7,6,7,8,4,5)
      • 太棒了!我以前从未使用过 CHOOSE。现在学习它。谢谢
      猜你喜欢
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多