我有一张工作表,它通过一个importrange和一个下拉列表从另一个工作表中提取一组动态行。我需要在同一列的第一个空单元格中放置一个平均值,这个平均值包括从第5行开始的上面一列中的所有数字(不包括包含平均值本身的单元格,因为这会产生循环引用错误)。但行数总是会改变。
我对谷歌脚本相当舒服,但仍然是新手,并且理想情况下希望基于列索引.setFormula
Lastrow+1
,但我似乎无法获得AVERAGE公式计算除包含平均公式的单元格以外的整个列。
答案 0 :(得分:1)
此脚本可以为您提供帮助,这适用于一个列,但我认为如果需要,它可以帮助您将其更改为适用于多个列:
function onEdit(e) {
//check if first row is changed
if (e.range.getRow()==1) {
var s = SpreadsheetApp.getActiveSheet();
//remove all data because filter does not want to overwrite existing values
s.getRange("A2:B").clear();
//put back the filter function
s.getRange("A5").setFormula("=FILTER(Sheet2!A1:B, Sheet2!A1:A = A1)");
//get number of rows
var lastrow = s.getLastRow();
//add the average function below
s.getRange("B"+(lastrow+1)).setFormula("=AVERAGE(B2:B"+(lastrow)+")");
}
}