在Excel中的2个不同列中查找和添加重叠的date

我在我的Excel工作簿上有两张桌子。 一个跟踪任务,一个跟踪假期。 我希望看到每个任务会产生的影响(例如,某个资源的起始date和结束date之内的假期总数)

在这里输入图像说明

左边的表格包含任务。 右边的表格包含叶子。 我可以在“E”列中使用什么公式来获取与特定资源相对应的任务的开始date和结束date内的假期总天数?

笔记:

  • 工作日从星期一到星期五(只留下影响
    应该考虑平日)
  • 假期不应该考虑在
    计算。
  • 总假期将包括开始和结束
    date。

我非常感谢这方面的帮助。

谢谢!

抱歉迟到张贴,但这已经采取了一些想法。 其中一种方法是在11月份生成一个所有date的数组,然后对照每一对离开date一次一个地testing数组元素,看看它们是否落在这些date之内,使用countifs。 所以基本的公式是

=SUMPRODUCT(COUNTIFS($H$2:$H$7,$A2,$I$2:$I$7,"<="&ROW(INDIRECT($C2&":"&$D2)),$J$2:$J$7,">="&ROW(INDIRECT($C2&":"&$D2)))) 

然而,我们想忽略周末,所以为了做到这一点,我把所有的周末date设置为零,然后才算比赛

 =SUMPRODUCT(COUNTIFS($H$2:$H$7,$A2,$I$2:$I$7,"<="&ROW(INDIRECT($C2&":"&$D2))*(WEEKDAY(ROW(INDIRECT($C2&":"&$D2)),2)<=5),$J$2:$J$7,">="&ROW(INDIRECT($C2&":"&$D2)))) 

一个相当长的公式,但似乎给出了正确的结果。

在这里输入图像描述

E,L和M列仅用于检查,不是F栏最终结果的一部分。

我用这个“数组公式”在E2确认与CTRL + SHIFT + ENTER并复制下来

=SUM((H$2:H$7=A2)*TEXT(NETWORKDAYS(IF(I$2:I$7>C2,I$2:I$7,C2),IF(J$2:J$7<D2,J$2:J$7,D2)),"0;\0"))

这将检查资源是否匹配,并且对于所有匹配的行,在叶子和任务之间的任何重叠date内进行NETWORKDAYS计算(忽略周末)。

在没有重叠的情况下,返回负值,因此TEXT函数用于将负值转换为零。

SUM函数将结果数组相加,以提供所需的总数 – 请参阅截图

如果你想允许在“离开”结束date字段的空白,那么你可以使用这个假设结束date是今天的调整版本

=SUM((H$2:H$7=A2)*TEXT(NETWORKDAYS(IF(I$2:I$7>C2,I$2:I$7,C2),IF(IF(J$2:J$7="",TODAY(),J$2:J$7)<D2,IF(J$2:J$7="",TODAY(),J$2:J$7),D2)),"0;\0"))

…或者您可以用包含date的另一个date或单元格引用replaceTODAY()的两个实例

在这里输入图像描述