计算date范围是否适合其他date范围
我有一组数据以及某些date(姓名,开始,结束)休假的人的姓名。
例:
Name Start End Joe 10-Jan-14 21-Jan-14 Billy 12-Feb-14 10-Mar-14 David 11-Jan-14 20-Jan-14 Patty 10-Jan-14 19-Jan-14 Megan 05-Jan-14 20-Jan-14 ------------------------------- Block 15-Jan-14 22-Jan-14
我想要计算在阻塞date期间将要休假的范围内的人数。 应该返回4; Joe
, David
, Patty
和Megan
。
我拥有的公式是:
=COUNTIFS(colStart, ">="&B1, colEnd, "<="&B2)
colStart
和colEnd
是“开始”和“结束”列的命名范围。
B1
和B2
是电子表格上的阻止date。
我的问题是,它不会计算在块开始date之前开始或在块结束date之后结束的人。即使他们将在块date的某个时间点上休假。 Joe
,例如..从1月10 Jan
开始。 他将在封锁期间继续休假。
在视觉上,我比较数字线。 我只需要帮助把它翻译成代码。
把你的配方稍微调整一下。
如果开始date等于或早于B2并且结束date大于或等于B1,那么周期必须有某种重叠 – 如果这些条件中的一个或另一个不成立,则不存在重叠,因此这个公式给你的计数
=COUNTIFS(colStart,"<="&B2,colEnd,">="&B1)
以下是如何从杰瑞的答案的反面查看它。 你有两个你不想要的场景。
- 阻止后的开始date
- 阻止之前的结束date
计算所有date并排除这两个。
=COUNT(colStart)-SUMPRODUCT((colStart>blkEnd)+(colEnd<blkStart))
假设开始date参考在B1上,结束date参考在B2上。
此外,请考虑数据集标题在单元格A4(Name)上开始,第一行数据是#5。
在D5上键入(并将公式向下拖动):
=IF(OR(AND(B5>$B$1,B5<$B$2),AND(C5>$B$1,C5<$B$2),AND(B5<$B$1,C5>$B$2)),1,0)
那么,在任何单元格中:
=SUM(D5:D9)