Добавляйте 1 в каждую ячейку в каждой строке двух столбцов, пока не будет достигнута пустая ячейка - Google Spreadsheet - PullRequest
0 голосов
/ 26 мая 2018

Все, что я хочу сделать, это добавить 1 к диапазону ячеек, пока он не достигнет пустой ячейки.Я также минус 1 от другого диапазона ячеек, пока он не достигнет пустой ячейки.В настоящее время я кодировал каждую ячейку индивидуально, но количество ячеек с данными в изменениях не очень практично.

Вот фрагмент кода, который я написал, может кто-нибудь мне помочь?

function Calculations() {
  //Week Number & Week Pay
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  s=SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName("Money")

  var currVal=s.getRange("C2").getValue()
  var plusVal= currVal +1
  s.getRange("C2") .setValue(plusVal)
  var currVal=s.getRange("B2").getValue()
  var minusVal= currVal -1
  s.getRange("B2") .setValue(minusVal)

  var currVal=s.getRange("C3").getValue()
  var plusVal= currVal +1
  s.getRange("C3") .setValue(plusVal)
  var currVal=s.getRange("B3").getValue()
  var minusVal= currVal -1
  s.getRange("B3") .setValue(minusVal)

  var currVal=s.getRange("C4").getValue()
  var plusVal= currVal +1
  s.getRange("C4") .setValue(plusVal)
  var currVal=s.getRange("B4").getValue()
  var minusVal= currVal -1
  s.getRange("B4") .setValue(minusVal)
}

1 Ответ

0 голосов
/ 26 мая 2018

Вместо использования записи A1 или R1C1 мне проще использовать числа при получении местоположения ячейки (диапазона).

Увеличивать номер строки в конце цикла.Цикл будет повторять максимальное количество строк с данными, и он прервется, если найдет пустую ячейку.

function Calculations() {
try{
  //Week Number & Week Pay
  var currVal,i,L,lastRow,minusVal,plusVal,ss,sh,theColumn,theRng,theRow;

  ss = SpreadsheetApp.getActiveSpreadsheet();//Get the active spreadsheet
  sh = ss.getSheetByName("Money");//Get a sheet tab by name
  lastRow = sh.getLastRow();//Get the number of the last row with data

  L = lastRow;
  theRow = 2;//Start in row 2

  for (i=0;i<L;i++) {//Loop as many times as there is number of rows with data
    theColumn = 3;//Column C

    theRng = sh.getRange(theRow,theColumn);//Get the range which is one cell

    currVal = theRng.getValue();//Get the value in one cell
    //Logger.log('currVal: ' + currVal);

    if (!currVal) {//If there is a blank cell then
      break;//quit the loop
    }

    plusVal= currVal +1;
    theRng.setValue(plusVal);

    theColumn = 2;//Column B

    theRng = sh.getRange(theRow,theColumn);

    currVal = theRng.getValue();
    minusVal = currVal - 1;
    theRng.setValue(minusVal);

    if (!currVal) {//If there is a blank cell then
      break;//quit the loop
    }

    theRow = theRow + 1;//Increment to the next row
  }

}catch(e) {
  Logger.log('message: ' + e.message);
  Logger.log('stack: ' + e.stack);
}
}
...