如何更有效地对一行中的单元格的值进行求和?

问题描述 投票:0回答:1

你好,我已经搜索并尝试了很长时间,但我就是不能得到它。在图片上,你可以看到我的Google Sheet。

我只是想把行中所有的数字加起来,是<=10。

我怎样才能简化下面的代码呢?有没有人有一个想法?


Picture of the project


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); 


}
javascript arrays google-sheets
1个回答
0
投票

你不需要使用过滤器,而是使用循环和条件语句的组合。

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); 
}

0
投票

这样的程序真的需要脚本吗?

=SUMIF(B2:B,"<=10",B2:B)


0
投票

@ziganotschka 谢谢你! 你的最后一个答案是有效的。但我还有一个 谅解 问题。

没有空的细胞-------------------------------------图片

原始数据. 要评估的区域定义得很清楚,其中没有空单元格。那为什么这个函数需要这条指令呢?

if(originalData[i][0] <= 10 /*&& originalData[i][0] !=''*/){ total ++; }

如果没有这一行额外的指令,这个函数会计算哪些单元格?

© www.soinside.com 2019 - 2024. All rights reserved.