如何计算和返回值

时间:2012-05-14 08:12:30

标签: google-sheets google-apps-script

我在以下脚本中遇到问题。我根本不是脚本,这也不是我的脚本,但是这里得到的结果是对值进行分组(例如,如果我在三个单元格中有一个值,它应该将值返回为3而不是返回AAA有人可以帮我计算价值并将其归还

先谢谢,

这是脚本:

function sumBackgroundColors(rangeString, color) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var sumRange = s.getRange(rangeString);
//var sum = 0;
var openCount = 0;
var sumRangeBackground = sumRange.getBackgroundColors();
var sumRangeValues = sumRange.getValues();

for(var row = 0; row < sumRangeBackground.length; row++ ) {
for(var col = 0; col < sumRangeBackground[0].length; col++ ) {
if( sumRangeValues[row][col]=="LG M"&& sumRangeBackground[row][col] == color ) {
openCount = openCount + sumRangeValues[row][col];
//if(sumRangeBackground[row][col] == color && sumRangeValues[row][col] == 1 ) {
// sum = sum + parseFloat(sumRangeValues[row][col]);

} 
}
}
return openCount;
//return sum;
}

2 个答案:

答案 0 :(得分:0)

这是一个将值作为参数进行搜索的函数。其余的事情已在评论栏中解释。

function searchCount(value){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //Get the whole data from activesheet in a 2D array
  var data = sheet.getDataRange().getValues();

  //Initialize counter
  var count = 0;

  //Iterate through the array
  for(var i in data){
    for(var j in data[i]){
      // if a match found, increament the counter
      if(value.toString == data[i][j]){
        count++;
      }
    }
  }
  // return the count value
  return count;
}

答案 1 :(得分:0)

您的问题可能归因于openCount = openCount + sumRangeValues[row][col];

根据您的示例 sumRangeValues [row] [col] 不是int。 int + not int = ??? 如果你想保留一些你想要的东西 openCount ++ 来代替那条线,这只是{{{{ 1}}

即使 sumRangeValues [row] [col] 是一个int,该行仍然不是你想要的。如果您在电子表格中搜索所有3个,那么您的代码会找到您的前3个,然后该行将执行openCount = openCount + 1;恭喜,您刚刚找到3个三分。每次找到三个时,你会继续添加三个。

Waqar的代码本质上是你的代码(非常简化,但它以相同的方式迭代),除了他不检查颜色,他使用++而不是那行。