我试图逐行求和并在各个行的总计单元格中包含值。 我尝试在应用脚本中循环。但不可能。任何人都可以帮我这个吗?
我有来自b3:f16的这些数据,我需要在h3:h16
中计算总数1906 904 106 221 1640
1771 842 97 188 1338
3221 1005 252 260 6323
3239 1141 317 287 7828
3556 1409 352 337 8890
3417 1307 303 382 7143
3264 1824 358 444 9288
2724 1916 196 395 3462
2641 1829 151 430 3255
4076 1858 398 471 12844
3986 2098 468 426 13411
4829 2504 422 514 14449
4462 4876 452 507 13285
5017 6654 423 410 7765
代码:
function adder() {
var sheet = SpreadsheetApp.getActiveSheet().getSheetByName("sheet1");
var data = sheet.getRange("B3:F16").getValues();
var range = sheet.getRange("H3:H16");
for(var i = 0; i < data.length; i++) {
var sum = 0;
for(var j = 0; j < data[i].length ; j++) {
sum += data[i][j];
}
range.setValue(sum);
Logger.log(sum);
}
}
答案 0 :(得分:0)
这可以用MMULT来完成..
在G3中,尝试:
=ArrayFormula(mmult(B3:F16, transpose(column(B3:F3)^0)))
如果您想使用脚本,请查看是否有效:
function adder() {
var sheet = SpreadsheetApp.getActive()
.getSheetByName("sheet1"),
res = [];
sheet.getRange("B3:F16")
.getValues()
.forEach(function (r) {
res.push([r.reduce(function (a, b) {
return a + b;
})])
});
sheet.getRange("H3:H16")
.setValues(res);
}
或使用&#39; classic&#39; for循环:
function adder2() {
var sheet = SpreadsheetApp.getActive()
.getSheetByName("Test"),
res = [],
sum,
data = sheet.getRange("B3:F16")
.getValues();
for (var i = 0, rlen = data.length; i < rlen; i++) {
sum = 0;
for (var j = 0, clen = data[0].length; j < clen; j++) {
sum += Number(data[i][j])
}
res.push([sum])
}
sheet.getRange("H3:H16")
.setValues(res);
}