2 回答
TA贡献1794条经验 获得超7个赞
解释:
您的目标是迭代从第 6 个工作表(索引 5)到第 15 个工作表(索引 14)的工作表。记住
getSheets()[0]
是第一张。对于每张工作表,您想要获取 range 中值的总和
AF3:AF
。为了获得总和,我将2D 数组展平为 1D,过滤掉空单元格,然后使用reduce求总和。最后我们将数据粘贴回工作表
Master Sales
。
解决方案:
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sheet1 = ss.getSheetByName('Master Sales');
const sheets = ss.getSheets().slice(5,15);
const data = [];
sheets.forEach( sh =>
data.push([sh.getRange('AF3:AF').getValues().flat().filter(r=>r!='').reduce((a,b)=>a+b)])
);
sheet1.getRange(2,39,data.length,1).setValues(data); //AM
}
边注:
在 javascript 中对数组进行切片的正确方法是使用slice:
const sheets = ss.getSheets().slice(5,15);
TA贡献2011条经验 获得超2个赞
不完全是一个答案。只是这一行看起来不太好:
var value = sheet.getRange('AF3:AF').getValue(); sheet1.getRange('AM2:AM').setValue(value);
不应该在那里getValues()
而setValues()
不是getValue()
setValue()
?由于范围包括许多单元格。
getValue()
并setValue()
仅处理范围的一个(第一个)单元格。
添加回答
举报