2017-06-29 81 views
1

對不起,這個問題的標題,我想不出一個更好的措辭。跨越給定時間範圍的事件數

我有時間的列範圍在裏面,即

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之間

(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的式GoogleSheets版本(THX編輯)

= ARRAYFORMULA(COUNTA(濾波器(H9:H44,或(和(左(H9:H44,5)< = 「11:00」 ,右(H9:H44,5)> =「15:00」)和(左(H9:H44,5)> =「11:00」,左(H9:H44,5)< =「15:00 「)和(右(H9:H44,5)< =」15:00「,右(H9:H44,5)> =」11:00「)))))

看來,Filter doesn不喜歡使用「and」和「or」,因爲它總是返回1作爲結果,不管條目如何。

回答

0

我相信這是做你想做的。它使用計數和過濾器。 '+'是或和'*'是和。我將日期範圍放在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")))))) 
相關問題