Как скопировать столбец в первую пустую ячейку другого столбца? - PullRequest
0 голосов
/ 25 марта 2019

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

Мне удалось получить первую часть проблемы:

function CopyValues() {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var source = ss.getRange ("MySheet!A4:A10");

  source.copyTo (ss.getRange ("MySheet!B32"), {contentsOnly: true});

}

где B32 - первая пустая ячейка в столбце B.

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

Любая помощь будет принята с благодарностью! Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Вот функция, которая будет возвращать первую пустую ячейку (в виде строки, например, 'B32') в заданном столбце и листе:

function getFirstEmptyCellInCol(sheet, column) {
  var values = sheet.getRange(column + ':' + column).getValues(); // get all the data of the column
  var rowCount = 0;
  while ( values[rowCount] && values[rowCount][0] != "" ) {
    rowCount++;
  }
  return column + parseInt(rowCount+1).toString();
}

Вы можете вызвать ее так:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MySheet");
emptyCell = getFirstEmptyCellInCol(sheet,'B');

С вашим кодом:

function CopyValues() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MySheet");
  var emptyCell = getFirstEmptyCellInCol(sheet,'B');
  var source = sheet.getRange ("A4:A10");
  source.copyTo (sheet.getRange(emptyCell), {contentsOnly: true});
}
0 голосов
/ 25 марта 2019

Попробуйте:

function getColumnHeight(col,sh,ss){
  var ss=ss || SpreadsheetApp.getActive();
  var sh=sh || ss.getActiveSheet();
  var col=col || sh.getActiveCell().getColumn();
  var rg=sh.getRange(1,col,sh.getLastRow(),1);
  var vA=rg.getValues();
  while(vA[vA.length-1][0].length==0){
    vA.splice(vA.length-1,1);
  }
  return vA.length;
}

getColumnHeight () + 1 - это то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...