[英]How to I calculate the sum of the last 7 rows, for each row, inside an ArrayFormula?
我有一個帶有數值的 D 列,在相鄰的列上,我想顯示相對於當前行的最后 7 行的總和。
我已經嘗試了幾個變體,其中大部分都受到 StackOverflow 和其他網站的啟發,但它們並沒有按照我的需要工作。
我認為由於 Offset() 創建了一個范圍,因此只需“切片”我需要的范圍並將其提供給 sum()
ArrayFormula( Sum(Offset(D7:D500,-6,1,7,1)) )
但是,它似乎只計算我放置這個公式的單元格。
我根據我的情況改編了我在網上找到的潛在解決方案
ArrayFormula(SUMIF(ROW(D7:D500),"<="&ROW(D7:D500),D7:D500))
這個計算所有前一行的總和,所以我想使用 SUMIFS() 會得到我需要的東西,因此
=ArrayFormula(SUMIFS(D7:D500, ROW(D7:D500),"<="&ROW(D7:D500), ROW(D7:D500),">"&ROW(D7:D500)-7))
但這個是行不通的。 我也嘗試使用 Address() 和 Interpret() 創建范圍,但它們似乎在 ArrayFormula() 中無法正常工作
我對它相當陌生,所以可能只是我沒有正確使用它們。 我在這里做錯了什么? 有沒有更好的方法來做到這一點? 如果可能,我寧願使用 ArrayFormula(),因為公式將存在於單個單元格中。
OFFSET
函數 COUNT(D7:D500)-7
告訴 EXCEL 從D7
減少多少個單元格。
=SUM(OFFSET(D7:D500,COUNT(D7:D500)-7,,7,1))
沒有Ctrl
+ Shift
+ Enter
Index
函數如果您擔心OFFSET
函數的波動性,您可以嘗試
=SUM(INDEX(D7:D500,COUNT(D7:D500)-6):INDEX(D7:D500,COUNT(D7:D500)))
沒有Ctrl
+ Shift
+ Enter
您可以通過在 Google Apps 腳本中創建的自定義函數來完成此操作。 為此,請執行以下步驟:
function SUM7ROWS(input) {
var output = [];
var sum;
for (var row = 0; row < input.length; row++) {
sum = 0;
for (var i = 6; i >= 0; i--) {
if (row - i >= 0) {
sum = sum + Number(input[row - i]);
}
}
output.push(sum);
}
return output;
}
D7:D500
),如下所示:我希望這有任何幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.