2012-05-14 66 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的代碼基本上是你的代碼(驚人簡化,但它迭代方式相同),除非他不檢查顏色,他使用++而不是該行。