日期之间的天数(条件应检查是否有重叠的日期)

时间:2019-03-07 07:28:50

标签: excel

Sample image
sample image 2

3rd Image

我需要一个公式来计算两个日期之间的天数。出发日期02/06/2018,到达日期03/06/2018因此,我的回答将是2天,其中包括出发日期,如明智的话,如果在以后的单元格中重复任何不应计数的日期,即应计算天数仅在不同的日期完成。请提供一个公式,根据随附的图片进行计算。我有3000名员工,像这样的数据行超过35,000。

示例图像2显示了oct18的3天计算和nov18的3天计算,这意味着尽管旅行是由nov18结束的,但我只计算了oct月份的3天,所以我考虑了nov18的旅行日期仅是nov月份。 / p>

1 个答案:

答案 0 :(得分:0)

从计算中排除先前计算的日期(基于标准)

  • 条件将公式行中的列值与此日期考虑的列值相匹配。
  • 考虑的日期是当前行之前的所有日期。
  • 日期范围包括在内
    • 从昨天到今天是2天,除非以前使用昨天来计算天数(对于此标准-Emp#),在这种情况下将是1天。

sample

公式:

=DAYS(E4,MAX(IF(A4=$A$3:$A3,$E$3:$E3),D4))+IF(MAX(IF(A4=$A$3:$A3,$E$3:$E3))<D4,1,0)

  • 粘贴到G4
  • CSE- Ctrl - Shift -输入此数组公式。
  • 向下拖动副本。

扩展范围

  • $ A $ 3:$ A3和$ E $ 3:$ E3都在扩大以前的值范围。
  • 绝对行地址$3和相对行地址3应该是公式开头上方的行。
  • 通过重新启动公式(也许每1K-5K行)来提高效率。
    • 要求数据按员工进行排序,然后(按提供的公式假设)按日期对任何给予员工进行排序。
    • 总是在员工开始时重新启动公式。
    • 扩展范围应参考前雇员的最后一条记录。
    • 一次编辑以重新启动公式:将绝对行引用(在重新启动的公式中)更改为与每个扩展范围(有四个)的现有相对行引用相同。

样品重启:

OLD =DAYS(E10,MAX(IF(A10=$A$3:$A9,$E$3:$E9),D10))+IF(MAX(IF(A10=$A$3:$A9,$E$3:$E9))<D10,1,0)
NEW =DAYS(E10,MAX(IF(A10=$A$9:$A9,$E$9:$E9),D10))+IF(MAX(IF(A10=$A$9:$A9,$E$9:$E9))<D10,1,0)
.                           ^   =    ^   =                         ^   =    ^   =
  • 在第10行中,^值变成全部4 =的{​​{1}}值。
  • CSE和复制项将重新启动的公式向下拖动。

说明

  • 计算天数为结束-开始并添加一。
  • 结尾是第^列。
  • 开始日期是该员工看到的最长时间。
    • 最大值考虑了E列中的“开始日期”以及该雇员的任何“结束”日期(最大值不考虑公式行的结束日期)。
  • 如果前一个最大结束日期少于此开始日期,则添加一天。
    • 这意味着开始日期尚未包括在计数中。
    • 如果上一个结束日期与开始日期相同,则该计算将在计数中包括有争议的日期。
    • 如果上一个结束日期比当前的开始日期新,那么包括该开始日期在内的重叠部分已经包含在先前的计算中。
      DAYS函数中的MAX函数将使用该结束日期作为天数的开始日期。