在 Microsoft Excel 中,我有一個命名 (2D) 范圍。為簡單起見,我們假設它看起來像這樣:
| 1 | 2 | 3 | 4 | 5 | 5 | 4 | 3 | 2 | 1 |
這代表了一個時間序列增長曲線,其中 N 個可以在任何時間點開始。我正在尋找一種有效的方法來計算這些在任何時間點的累積總和,假設 N 從那個時間點開始。
例如,如果一個在時間 0 開始,一個在時間 3 開始,兩個在時間 7:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | 0 | 0 |
那么累計總數將是:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 5 | 4 | 3 | 2 | 1 |
| 1 | 2 | 3 | 4 | 5 | 5 | 4 | |||
| 2 | 4 | 6 | |||||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 2 | 3 | 5 | 7 | 8 | 8 | 10 | 11 | 11 |
我想寫一個公式來達到這個總數,而不必使用這些額外的行來求和,但不知道如何進行。
uj5u.com熱心網友回復:
使用 SUMPRODUCT 和 INDEX:
=SUMPRODUCT(INDEX($M$1:$V$1,(COLUMN()-COLUMN($A$1:A1) 1)),$A$2:A2)
范圍是動態的,并且隨著它被拉過來而增加。

對于不是 Office 365 的版本,我們需要欺騙 INDEX 接受陣列:
=SUMPRODUCT(INDEX($M$1:$V$1,N(IF({1},(COLUMN()-COLUMN($A$1:A1) 1)))),$A$2:A2)
然后使用 Ctrl-Shift-Enter 確認,使其成為陣列公式。

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/377336.html
標籤:擅长
上一篇:使用openpyxl更新excel檔案中單元格的值而不用python覆寫
下一篇:VBA-比較兩張紙并突出差異
