我有一组数据,其中包含某些日期(名称,开始,结束)的人员姓名。
示例:
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
我想计算一下这个范围内的人数,这些人将在封锁日期前去度假。它应该返回4; Joe
,David
,Patty
和Megan
。
我的公式是:
=COUNTIFS(colStart, ">="&B1, colEnd, "<="&B2)
colStart
和colEnd
是“开始”和“结束”列的命名范围。
B1
和B2
是我的电子表格中的阻止日期。
我的问题是它不计算在块开始日期之前开始或在块结束日期之后结束的人。即使他们将在块日期的某个时间点休假。 Joe
,例如..从10 Jan
开始。在封锁日期期间,他仍将休假。
视觉上我正在比较数字线。我只需要帮助就可以将其转换为代码。
答案 0 :(得分:4)
只需将你的公式转一点。
如果开始日期等于或早于B2 AND 结束日期大于或等于B1,那么期间必须存在某种重叠 - 如果其中一个或另一个条件不成立则没有重叠,因此这个公式给出了你的计数
=COUNTIFS(colStart,"<="&B2,colEnd,">="&B1)
答案 1 :(得分:2)
以下是如何从杰瑞的答案的另一面来看待它。您有两个不想要的场景。
计算所有日期并排除这两个日期。
=COUNT(colStart)-SUMPRODUCT((colStart>blkEnd)+(colEnd<blkStart))
答案 2 :(得分:1)
假设开始日期参考在B1上,结束日期参考在B2上。
另外,请考虑数据集标题从单元格A4(名称)开始,第一行数据是#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)