对于这个问题的标题感到抱歉,我想不出更好的方法来表达它。
我有一个包含时间范围的列,即
08:45-17:00
06:00-10:30
09:10-14:30
08:15-16:50
10:15-17:15
15:30-20:10
09:30-13:10
等
我需要的是跨越比较时间范围的那些事件的计数。例如,比较范围为11:00-15:00,计数应包括以下列中的任何一项: -
(1)。开始时间或结束时间在11:00到15:00之间
OR
(2)。在11:00之前开始,在15:00之后结束。
在上面的示例中,计数为5。
此公式为各个条目提供正确的结果(0或1):
=sum(if(or(and(mid(I14,7,5)>"15:00",mid(I14,1,5)<"11:00"),and(mid(I14,1,5)>"11:00",mid(I14,1,5)<"15:00"),and(mid(I14,7,5)>"11:00",mid(I14,7,5)<"15:00")),1,0))
可能有更优雅的写作方式!
围绕该代码包装arrayformula不起作用。
任何帮助非常感谢。提前谢谢。
这是Ed的公式(thx Ed)的GoogleSheets版本
= ARRAYFORMULA(COUNTA(滤波器(H9:H44,或(和(左(H9:H44,5)LT = “11:00”,右(H9:H44,5)GT =“15:00 “),和(左(H9:H44,5)GT =” 11:00" ,左(H9:H44,5)LT = “15:00”),和(右(H9:H44,5) &lt; =“15:00”,右(H9:H44,5)&gt; =“11:00”)))))
似乎Filter不喜欢使用“和”和“或”,因为无论条目如何,它总是返回1。
答案 0 :(得分:0)
我相信这可以做你想要的。它使用counta和filter。 '+'是或者'*'是和。我把日期范围放在A1:A7中,所以调整到你的范围。
=arrayformula(COUNTA(FILTER( A:A ,(((right(A:A,5)>"15:00")*(left(A:A,5)<"11:00"))+(((left(A:A,5)>"11:00")*(left(A:A,5)<"15:00")))+(((left(A:A,5)>"11:00")*(LEFT(A:A,5)<"15:00")))+((right(A:A,5)>"11:00")*(RIGHT(A:A,5)<"15:00"))) )))