2012-05-14 67 views
0

我在下面的脚本中遇到问题。我没有太多的脚本,而且这也不是我的脚本,但这里得到的结果是分组的值(例如,如果我有三个单元格中的值A,它应该返回值为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

这里是要搜索的功能,将采取价值其余部分已在注释行中进行了解释

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; 
} 
+0

Waqar'value.toString'可能是错误的(缺少括号)。无论如何,没有必要分析值,因为'=='操作符已经这样做了。而且,如果该值实际上是一个数字,日期或布尔值呢?解析对我来说没有多大意义:) –

0

你的问题可能是由于openCount = openCount + sumRangeValues[row][col];

根据你的榜样sumRangeValues [行] [COL]不是int。 int +不是int = ???如果你想保持的东西计数,你可能想openCount ++替换该行,而不是,这只是一个快捷方式到openCount = openCount + 1;

即使sumRangeValues [行] [COL]一个int,该行仍然不会是你要找的。如果您在电子表格中搜索所有3,您的代码会找到您的前3个,然后该行会执行0 = 0 + 3恭喜,您刚刚找到3个三分。每当你找到三个时,你会继续添加三个。 Waqar的代码基本上是你的代码(惊人简化,但它迭代方式相同),除非他不检查颜色,他使用++而不是该行。