根据给定的小时数确定天数(不包括周末)

时间:2018-05-28 23:11:59

标签: excel excel-formula date-arithmetic

我有两个重要的细节输入到excel表,Job_Start_Date和Job_Hours(表示完成作业所需的小时数)。鉴于某些工作时间(例如上午7:00至下午3:30),我需要计算他们将完成的日期和时间。我已经有了基本的工作,但是我不能在我的生活中弄清楚如何在该计算中跳过周末(请注意,Sat / Sun有一个布尔值来定义是否应该跳过那一天)。

以下是数据的示例
以及数据可视化的一个示例:( DIV错误是因为员工数等于0,所以不用担心。)

这是可视化工具中使用的公式(大规模索引匹配)

=IFNA(INDEX(INDIRECT(Allocation!$A$1), MATCH(1,($A3 = INDIRECT(Allocation!$K$1)) 
  * (C$1 >= INDIRECT(Allocation!$C$1)) * (C$1 <= INDIRECT(Allocation!$D$1)) 
  * IF(C$1 = INDIRECT(Allocation!$C$1), ($B3 >= INDIRECT(Allocation!$E$1)), 
  ($B3 >= INDIRECT(Allocation!$I$1))) * IF(C$1 = INDIRECT(Allocation!$D$1), 
  ($B3 < INDIRECT(Allocation!$F$1)), ($B3 < INDIRECT(Allocation!$J$1))), 0)),"")

正如您在图片中看到的那样,星期六需要被跳过(FALSE),但它仍然显示在可视化工具上。但是,如果我包含一个与星期六条件匹配的语句(所以它只在TRUE星期六显示),它不会改变结束日期,因此不会将最后一天推到星期一。

基本上问题是:我怎样才能跳过几天但保留“工作时间”。这必须在同一个Job表(第一张图片)中的excel公式中完成。

感谢。

1 个答案:

答案 0 :(得分:0)

以下是我使用WORKDAY.INTL工作的方式。

首先是嵌套的IF,以确定用于workday.intl函数的周末类型

Weekend=IF(OR([@[JOB SATURDAY]], [@[JOB SUNDAY]]), IF(AND([@[JOB SATURDAY]], [@[JOB SUNDAY]]), -1, IF([@[JOB SATURDAY]], 11, 17)), 1)

然后是引用该值的第二个if语句,然后吐出正确的日期

=IF([@[Weekend]] = -1, [@[JOB START DATE]]+[@[Working Days]], WORKDAY.INTL([@[JOB START DATE]], [@[Working Days]], [@[Weekend]]))