我在以下脚本中遇到问题。我根本不是脚本,这也不是我的脚本,但是这里得到的结果是对值进行分组(例如,如果我在三个单元格中有一个值,它应该将值返回为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;
}
答案 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的代码本质上是你的代码(非常简化,但它以相同的方式迭代),除了他不检查颜色,他使用++而不是那行。