Листы Google Как сделать макрос, который вставляет относительный диапазон - PullRequest
0 голосов
/ 14 марта 2020

Я испанец sh говорит. Я попытался записать макрос с этими инструкциями для сочетаний клавиш.

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

Double click left, Ctrl shift left, Ctrl c, Click in the specific sheet, Ctrl start, Ctrl down, Click down, Paste only values,

И сохранить макрос

Когда я go Редактор скриптов, это код, который был записан

function real() {

  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(0, -2).activate();
  var currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.PREVIOUS).activate();
  currentCell.activateAsCurrentCell();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Presupuestos'), true);
  spreadsheet.getCurrentCell().offset(0, 0).activate();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
  spreadsheet.getCurrentCell().offset(1, 0).activate();
  spreadsheet.getRange('Correlativos!A2:d2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

Но всегда вставлять тот же диапазон A2: D2, и мне нужно скопировать и вставить из столбца A в столбец D моей текущей строки.

Я всегда нахожусь в столбце F моей текущей строки и перемещаю две ячейки влево, потому что мне нужно скопировать весь диапазон от столбца A до столбца D текущей строки.

Пожалуйста Я был бы признателен за любую помощь.

1 Ответ

1 голос
/ 15 марта 2020

У вас есть курсор на ячейку в столбце F листа = "Correlativos". Вы хотите скопировать ячейки A: D текущей строки этого столбца A - D в той же строке на sheet = "Presupuestos". Однако ваш макрос игнорирует расположение курсора и всегда копирует range = "A2: D2".


Причина, по которой макрос всегда копирует "A2: D2", заключается в том, что этот диапазон жестко закодирован в последний строка макроса: spreadsheet.getRange('Correlativos!A2:d2')....

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

  • var row = correlativos.getCurrentCell().getRow();: эта строка возвращает номер строки текущей ячейки на листе = "Correlativos".
  • последняя строка ( correlativos.getRange(row,1,1,4).copyTo...) почти идентична строке макроса, но посмотрите на метод getRange(). Диапазон определяется «строкой, столбцом, numRows, numColumns».
    • row: это было зафиксировано переменной "строка",
    • column: начальный столбец - Столбец A = 1,
    • numrows: равно 1, вы хотите скопировать данные только из текущей строки.
    • numColumns: равно 4 (столбцы A, B, C и D).

function so6068695301() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var presupuestos = ss.getSheetByName("Presupuestos");
  var correlativos = ss.getSheetByName("Correlativos");


  // the cursor will be located in Column F of Sheet = Correlativos
  // goal to copy the Range A:D of the current row from Correlativos to Presupuestos
  var row = correlativos.getCurrentCell().getRow();

  correlativos.getRange(row,1,1,4).copyTo(presupuestos.getRange(row,1,1,4),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

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