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

このコードを //need help セクションに入れてください。

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

Just as an alternative, you can achieve this with a spreadsheet function, entered in 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 に答える