[英]How can I sum the values of cells in a row more efficiently?
您好,我已经搜索并尝试了很长时间,但我就是无法得到它。 在图片上你可以看到我的谷歌表格。
我只想将<= 10的行中的所有数字相加。
如何从下面简化代码? 有人有想法吗? 非常感谢!
function calculationFirstColumn() { var sheet = SpreadsheetApp.getActiveSheet(); var originalData = sheet.getRange(2, 2, sheet.getLastRow() -1, 1).getValues(); var filteredItems = originalData.filter(function(x){return x==1}).length; var filteredItems2 = originalData.filter(function(x){return x==2}).length; var filteredItems3 = originalData.filter(function(x){return x==3}).length; var filteredItems4 = originalData.filter(function(x){return x==4}).length; var filteredItems5 = originalData.filter(function(x){return x==5}).length; var filteredItems6 = originalData.filter(function(x){return x==6}).length; var filteredItems7 = originalData.filter(function(x){return x==7}).length; var filteredItems8 = originalData.filter(function(x){return x==8}).length; var filteredItems9 = originalData.filter(function(x){return x==9}).length; var filteredItems10 = originalData.filter(function(x){return x==10}).length; var total = filteredItems+filteredItems2+filteredItems3+filteredItems4+filteredItems5+ filteredItems6+filteredItems7+filteredItems8+filteredItems9+filteredItems10; sheet.getRange("B18").setValue(total); }
您不需要使用过滤器,而是使用循环和条件语句的组合:
function calculationFirstColumn() {
var sheet = SpreadsheetApp.getActiveSheet();
var originalData = sheet.getRange(2, 2, sheet.getLastRow() -1, 1).getValues();
var total = 0;
for (var i = 0; i < originalData.length; i++){
if(originalData[i][0] <= 10){
total += originalData[i][0];
}
Logger.log(total);
}
sheet.getRange("B18").setValue(total);
}
像这样的事情真的需要脚本吗?
=SUMIF(B2:B,"<=10",B2:B)
@ziganotschka谢谢! 你的最后一个答案有效。 但我仍然有一个理解问题。
原始数据。 要评估的区域明确定义,其中没有空单元格。 那为什么这个 function 需要指令呢?
if(originalData[i][0] <= 10 /*&& originalData[i][0] !=''*/){ total ++; }
如果没有此附加行,此 function 计数哪些单元格?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.