2012-08-01 180 views
3

我想要使用脚本来计算电子表格中特定列中值的重复次数,以便使用脚本填充不同的列(同一行)当提交表格时。这些是在列B,我想算值:使用脚本计算Google电子表格列中的值重新计算值

6 ACM
5 ACM
4 ACM
5 CGC
7 CGC
6 ACM
7 ACM
7 ACM

使得如果计算中正常工作列C将与这些号码来填充:

我知道如何读取数据,以及如何写入电子表格,但我不知道如何实际算值。这是我到目前为止:

function countif() { 
    var ss = null; 
    try { 
    ss = SpreadsheetApp.openById("0AliYViHYAwaNdHQyMXlKT2Q5UElQY184T3BWYTRiM2c"); 
    } catch (ex) { 
    ss = SpreadsheetApp.getActiveSpreadsheet(); 
    } 
    var sheet = ss.getSheetByName("Sheet1"); 
    var lastLine = sheet.getLastRow(); 
    var data = sheet.getRange("B2:B").getValues(); 
    var count = 0; 

//need help here 

    sheet.getRange(lastLine,3).setValue(count); 
} 

谢谢!

回答

1

把这段代码放在你需要帮助的部分。

for (var i = 0 ; i < lastLine ; i++){ 
    var count = 1; 
    for (var j = 0 ; j < i ; i ++) { 
    if (data[j][0] == data[i][0]){ 
     count++; 
    } 
    } 
    sheet.getRange('C' + (i+1).toString()).setValue(count); 
} 
+0

感谢您的答复。此代码给了我一个错误:“参数必须是一个范围”参考此行: sheet.getRange('C'+ i.toString())。setValue(count); – AnswerFirst 2012-08-01 17:01:50

+0

尝试修改后的代码。我认为这个问题是第一次迭代会尝试写入C0,当然,它不存在! – Srik 2012-08-01 18:12:38

+0

Hhhhmmm ...现在我得到:TypeError:无法从undefined读取属性“0”。关于此行 if(data [j] [0] == data [i] [0]){ – AnswerFirst 2012-08-01 18:41:04

0

只是作为一个替代方法,可以通过电子表格功能,在C1中输入实现这一目标:

=ArrayFormula(IF(ROW(B:B)=1;"Count";IF(LEN(B:B);MMULT((ROW(B:B)>=TRANSPOSE(ROW(B:B)))*(B:B=TRANSPOSE(B:B));SIGN(ROW(B:B)));IFERROR(1/0)))) 
+0

非常感谢亚当。我结束了使用函数来使整个工作表正常工作,并使这个功能成为可能。 :) – AnswerFirst 2012-08-02 19:29:16

相关问题