你好,我已经搜索并尝试了很长时间,但我就是不能得到它。在图片上,你可以看到我的Google Sheet。
我只是想把行中所有的数字加起来,是<=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 谢谢你! 你的最后一个答案是有效的。但我还有一个 谅解 问题。
原始数据. 要评估的区域定义得很清楚,其中没有空单元格。那为什么这个函数需要这条指令呢?
if(originalData[i][0] <= 10 /*&& originalData[i][0] !=''*/){ total ++; }
如果没有这一行额外的指令,这个函数会计算哪些单元格?