LANG SELRCT

コードを書く場所についてはこちら

2017年10月5日木曜日

シートの特定の列を対象にデータの出現回数を取得する

A列に重複するデータがあるとき、B列に通し番号を付けていきます。

例として、A列の2行目から9行目を対象に、重複するデータが無い場合は「1」を、重複するデータがある場合は、順番に「2」「3」...と出てきた回数をB列に入力していきます。
A列が昇順でソートされていないとうまくいかないので、コードの中でソートを行っています。

function word_occurrences() {
  var get_range = "A2:A9"; //A列の2行目から9行目
  var set_col = 2; //入力するセルはB列
  var start_cell = 2; //2行目から入力
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var range = sh.getRange(get_range);
  range.sort([{
    column: 1,
    ascending: true
  }]);
  var values = range.getValues();
  for (var i = 0; i < values.length; i++) {
    if (i == 0) {
      sh.getRange((i + start_cell), set_col).setValue(1);
    } else {
      var active_value = values[i].toString();
      var prev_value = values[(i - 1)].toString();
      if (active_value == prev_value) {
        var rank = sh.getRange((i + 1), set_col).getValue();
        sh.getRange((i + start_cell), set_col).setValue(parseInt(rank) + 1);
      } else {
        sh.getRange((i + start_cell), set_col).setValue(1);
      }
    }
  }
}

実行前

実行後