
我有 550 行數據,代表每日飛行時間。每個航班依機型的不同,需要一定數量的乘客。該任務需要 45 分鐘。因此,在任何給定的航班時間,都會有人忙於該航班以及之前 45 分鐘內的任何航班。我想獲得任何飛行時間所需的總人數。我還想將 45 分鐘作為輸入變量,看看這個任務時間的變化如何影響每個飛行時間的人力需求。
這是數據的模型:
A B C. D
1 2:30 4 0:45 4
2 2:45 3. 7
3 3:15 2. 9
4 3:30 4. 9
5 3:35 5. 11
A 列包含飛行時間。 B 列包含該航班所需的人數。儲存格 C1 包含任務時間值。我想在 D 欄中填寫每個航班時間所需的員工總數。此範例顯示了已填寫的結果。
範例計算如下圖所示。以第 4 行為例。飛行時間為3點30分。根據 45 分鐘的任務時間,2:45 或之後的所有航班都需要同時活躍的人員。這樣的航班共有 3 個,分別是 2:45、3:15 和 3:30。 B 欄中這些航班的人員配置為 3、2 和 4,因此 3:30 航班時的總人員配置需求為 9。
如果我將 C1 中的任務時間更改為 30 分鐘,則只有 3:15 和 3:30 的航班符合資格,因此 D4 中的總數將為 6。
我已經嘗試過了SUMIF
並且SUMIFS
。我添加了一行資料(時間)減去,然後嘗試對該時間範圍內C1
的所有內容求和。B
我似乎無法獲得B
添加數據的列。
我試過
=sumif(A:A,"<=A4",B:B)-sumif(A:A,"<=A4-C1",B:B)
答案1
這是一種解決方案。這就是 D1 的公式。輸入它,然後複製到 D 中的其他儲存格:
=SUM(INDIRECT("b"&IF(ISNA(MATCH(A1-C$1,A$1:A1,0)),IF(ISNA(MATCH(A1-C$1,A$1:A1,1)),1,MATCH(A1-C$1,A$1:A1,1)+1),MATCH(A1-C$1,A$1:A1,0))):B1)
基本上就是這個邏輯。它找到滿足您的條件的第一行,然後將 B 中的值與當前行之間的值相加。它找到第一行的方法是使用 MATCH 函數將列 A 中的時間減去 C1 中的時間與目前行(包括當前行)中的時間值進行比較。 MATCH 沒有以升序對值進行 GE 查找,因此它使用 LE 和 EQ 的組合。
- 如果沒有 LT,則表示第 1 行是 GE,因此這是第一行。
- 如果一行是 EQ,則該行是起始行。
- 如果一行是 LE 而不是 EQ,則表示下一行是第一個 GE,因此這是第一行。