如何在循环浏览电子表格时基于两列计算字段

时间:2017-01-06 21:06:43

标签: scripting google-sheets

我有一个包含两列的表,我想计算第三列。

第1栏|第2栏|计算栏
   1 | 1 | 1
   1 | 1.5 | 2
   1 | 2 | 3
   2 | 2 | 1

我正在尝试将第三列添加到我的工作表中,然后按升序递增计算值。一旦第1列中的值发生更改,递增应该重新开始。我曾经擅长这一次......但生锈:)任何帮助都会很棒

  //name the datasets
  var ss=SpreadsheetApp.getActiveSpreadsheet();

  //add a new column and name it
  ss.insertColumnAfter(2);
  ss.getRange("C1").setValue("Tier");

  //Get the first store number and result space number
  var atvStr = ss.getRange("A2").getValue();
  var strNbrR = ss.getRange("A2:A9000").getValues();
  var rslt = ss.getRange("C2:C9000").getValues();

  //get the last filled row and +1 to go on to the next
  var line=ss.getLastRow()+1;

  for (i in strNbrR) {

    if (strNbrR[i] = atvStr) {
      ss.getRange(line).setValue("1");
    }
  }
}

1 个答案:

答案 0 :(得分:1)

如果我理解正确的话,试试这个:

function testMe(){
  //name the datasets
  var ss=SpreadsheetApp.getActiveSpreadsheet();

  //add a new column and name it
  ss.insertColumnAfter(2);

  //Get the first store number and result space number
  var strNbrR = ss.getRange("A2:A").getValues();
  var rsltRng = ss.getRange("C2:C");
  var rsltVals = rsltRng.getValues();

  var newValue = 1;

  for ( i in strNbrR) {
    if (i >1 ){
      if (strNbrR[i][0] !== strNbrR[i - 1][0]) {
        ++newValue;
      }
    }

    rsltVals[i][0] = newValue;
  }
  rsltRng.setValues(rsltVals);
}

如果A中的值与上一行中单元格A中的值不同,它将增加C列中的值。