获取谷歌电子表格的最后一个X行
问题描述:
说我有一个18行的spresheet的范围内,我可以硬编码在列d最后7个值的范围和平均它们的值,如下所示:获取谷歌电子表格的最后一个X行
=AVERAGE(D12:D18)
那么我怎么能不用硬编码来做同样的事情,所以它会工作,因为我添加更多的行?
答
如果要计算平均值或总和,则不需要脚本。你也可以用一个数组过滤器来完成。下面的公式计算在A列中的平均过去7行:
=AVERAGE(FILTER(A:A;ARRAYFORMULA(ROW(A:A)>COUNT(A:A)-7+1)))
这假定该数据在第1行开始。否则你必须在该式中,后者不断改变为行号,其中数据开始。
答
原来你可以使用自己的代码。凌乱,但它的工作原理:
function lastValues(column, num) {
var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();
for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {};
arr = [];
for(i=0; i < num+1; i++){
arr.push(values[lastRow - i]);
};
return arr;
};
答
您也可以使用OFFSET()
,因为Webapps.SO answer用于汇总一行的最后X个单元格。
对于相反的---聚合一列的最后一个X单元格--- OFFSET params只需要四处移动即可。这里有一个命令应该适用于你的例子(这里假设你的数据从D2开始并到达D18):
=iferror(average(offset($D$2, max(0, count($D$2:$D18)-7), 0, 7, 1)), 0)
它抱怨 - 参数必须是范围! – Mutant 2014-07-10 19:03:06