在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()
的两个实例