Excel - 每 30 分鐘間隔對連續資料求和

Excel - 每 30 分鐘間隔對連續資料求和

我從雨量計收集了以下格式的資料:

索引資料時間戳

1. 0    2020-01-05T00:00:00
2. 0    2020-01-05T01:00:00
3. 1    2020-01-05T01:20:15
4. 0    2020-01-05T02:00:00
5. 1    2020-01-05T02:09:00
6. 1    2020-01-05T02:09:45
7. 1    2020-01-05T02:20:00
8. 1    2020-01-05T02:20:01
9. 0    2020-01-05T03:00:00

我想每 30 分鐘對連續資料求和。像下面這樣:

索引資料時間戳

1. 0    2020-01-05T00:00:00
2. 0    2020-01-05T00:30:00
3. 0    2020-01-05T01:00:00
4. 1    2020-01-05T01:30:00
5. 0    2020-01-05T02:00:00
6. 4    2020-01-05T02:30:00
7. 0    2020-01-05T03:00:00

我已經從時間戳中獲取了 24 小時時間,並嘗試按照以下公式計算減去 2 個時間戳記是否小於 30 分鐘:

=IF(((time)-(time-1))<=0.020833,"ok","not within 30min interval")

我想到的 Excel 公式是沿著SUMIFS函數的路線獲得一些東西,該函數將 30 分鐘間隔內的所有連續值相加

我試圖在 30 分鐘的時間間隔內設定某種COUNTIF方法來檢查連續數據,並嘗試計算 aSUMIFS和 aSUMPRODUCT函數,但我正在努力將事物放在一起並符合邏輯。

謝謝

答案1

您可以使用這個公式:

=DATEVALUE(SUBSTITUTE(C2,"T"," "))+CEILING.MATH(ROUND(TIMEVALUE(SUBSTITUTE(C2,"T"," ")),5),"0:30")

在此輸入影像描述

分為步驟:

  1. 若要讓 Excel 將文字辨識為日期/時間,請刪除 T:

    =替換(C2,“T”,“”)

  2. 若要從該日期/時間取得日期:

    =日期值(D2)

  3. 若要取得該日期/時間的時間:

    =回合(時間值(D2),5)

(我將解釋為什麼這裡需要 ROUND)

  1. 要計算下一個 30 分鐘增量:

    =CEILING.MATH(ROUND(TIMEVALUE(SUBSTITUTE(C2,"T"," ")),5),"0:30")

然後將日期與 30 分鐘增量連接起來,即可得到答案頂部的公式。然後,您可以對錶進行透視,以按增量對值求和。

請注意步驟 3 中對 ROUND 的呼叫:

當我第一次寫公式時,我在第3步中沒有使用ROUND,但是我發現2:00:00出來的增量是2:30:00,這是不對的。經過檢查,我發現 TIMEVALUE 函數沒有回傳正確的準確度。四捨五入到小數點後 5 位解決了這個問題。

在此輸入影像描述

編輯:

由於您有 Excel 365,我假設您也可以存取 SEQUENCE 函數。

若要在沒有資料透視表的情況下進行聚合,您可以執行以下操作(假設您沒有預先存在的增量清單):

  1. 計算 MIN TimestampGroup 和 MAX Timestamp Group 之間 30 分鐘增量的數量
  2. 建立一個包含這麼多增量的序列(以便也表示不在來源資料中的增量)
  3. 使用 SUMIF 引用來源資料並按 TimestampGroup 對資料求和
  4. 可以選擇為聚合表建立 GroupIndex

在此輸入影像描述

聚合表中的公式為:

組索引:

=SEQUENCE((MAX($D$3:$D$11)-MIN($D$3:$D$11))*48+1)

這只是告訴您最小 TimestampGroup 和最大 TimestampGroup 之間有多少個 30 分鐘增量,並傳回該多個增量的整數序列。

時間戳組:

=SEQUENCE((MAX($D$3:$D$11)-MIN($D$3:$D$11))*48+1,1,MIN($D$3:$D$11),1/48)

再次,使用序列函數,返回時間戳組列表,但不是從 1 開始序列並遞增 1(預設的第 3 和第 4 個參數),而是從最小時間戳組開始序列並遞增 30 分鐘,即一天的1/48。

價值:

=SUMIF($D$3:$D$11,$F16,$B$3:$B$11)

對聚合表目前行上 TimestampGroup 所指示的行的資料列求和。

相關內容