3

我想使用脚本计算值在电子表格的特定列中再次出现的次数,以便在提交表单时使用计数填充不同的列(同一行)。这些是我想计算的 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);
}

谢谢!

4

2 回答 2

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);
}
于 2012-08-01T16:26:08.450 回答
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))))
于 2012-08-01T20:17:32.117 回答