我有一個Google電子表格,它維護事件的歷史記錄以及事件發生日期,如下所示(B列爲開始日期,C列爲結束日期) :日期範圍與一組其他日期範圍之間的累積重疊天數
Sheet A
| | A | B | C |
|1| Event1 | 1/15/2013 | 2/20/2013 |
|2| Event2 | 3/1/2013 | 3/10/2013 |
|3| Event3 | 5/7/2013 | 5/9/2013 |
我想要做的就是能夠找出在給定另一個日期範圍的情況下,與這些事件之間有多少重疊的天數。例如,如果我的日期範圍爲2/1/2013至3/15/2013,那麼計算應該能夠確定與Event1有20天的重疊,與Event2有10天的重疊,以及0天與Event3重疊。把它放在一起,我要顯示的值是30。
下面是表示欲計算作爲列C爲一對夫婦例如日期範圍的值的示例第二片:
Sheet B
| | A | B | C |
|1| 2/1/2013 | 3/15/2013 | 30 |
|2| 3/20/2013 | 3/25/2013 | 0 |
|3| 5/1/2013 | 5/7/2013 | 1 |
問題我我的意思是,雖然我可以編寫單元格表達式來顯示SUM和FILTER幾乎可以讓我到達那裏,但我嘗試的最後一步(我嘗試了很多方法來實現它)似乎總是減少我的計算將所有事件都彙總爲單個標量,然後才能對每個事件進行彙總。
例如,如果我寫類似的下面表B的C1小區作爲一個步驟,以找出如何計算這樣的:
=SUM(MIN(B1,'Sheet A'!C:C) - MAX(A1,'Sheet A'!B:B))
然後SUM清楚地包括其中事件沒有負值與所討論的時間段重疊。 (您可以調整公式並將其展開爲表A的每一行以查看未取整的值。)
但是,如果我嘗試使用類似下面的內容過濾出那些不相交的行,我只會得到一個' #N/A'結果。我猜這是因爲過濾器功能不喜歡使用被總結的價值觀和標準的相同的範圍,但是這只是一個猜測:
=SUM(FILTER(MIN(B1,'Sheet A'!C:C)-MAX(A1,'Sheet A'!B:B) ; MIN(B1,'Sheet A'!C:C)>MAX(A1,'Sheet A'!B:B)))
如果我不是嘗試使用MAX( )函數或IF()來清除非相交行產生的負值,SUM返回0.我認爲這是因爲MAX和IF正在減少我想要求和的數據範圍標量變量在求和之前完成。即SUM()在單個標量上運行。
=SUM(MAX(0, MIN(B1,'Sheet A'!C:C) - MAX(A1,'Sheet A'!B:B)))
或
=SUM(IF(MIN(B1,'Sheet A'!C:C)>MAX(A1,'Sheet A'!B:B), MIN(B1,'Sheet A'!C:C) - MAX(A1,'Sheet A'!B:B), 0))
任何想法如何計算我想要什麼?我唯一的想法是將Sheet A分解出來,以便每一行只覆蓋一天。然後找到相交日期的總和應該更容易一些,但爲Sheet A添加新事件的努力卻非常大。