使用脚本计算Google电子表格列中的重复值

时间:2012-08-01 15:40:44

标签: google-apps-script google-sheets countif

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

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

这样如果计算工作正常,C列将填充这些数字:

1
1
1
1
1
2
1
2

我知道如何阅读数据以及如何写入电子表格,但我不知道如何实际计算数值。以下是我到目前为止的情况:

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);
}

谢谢!

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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))))