代码之家  ›  专栏  ›  技术社区  ›  Maxim Srour

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

  •  1
  • Maxim Srour  · 技术社区  · 7 年前

    我有两个输入到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 )不会改变结束日期,因此不会将最后一天推至周一。

    本质上的问题是:我怎样才能跳过几天而保留“工作时间”。这必须在同一个作业表(第一个图像)的Excel公式中完成。

    谢谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Maxim Srour    7 年前

    以下是我如何使用 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]]))