@Snowyyy

Как протянуть скриптом формулу по столбцу «J:J», до последней заполненной ячейки ориентируясь на столбец «C:C»?

Здравствуй, очень нужна Ваша помощь. Нужно скриптом определить последнюю заполненную ячейку в столбце "J:J", и протянуть от этой ячейки формулу по столбцу "J:J", до последней заполненной ячейки ориентируясь на столбец "C:C"? Например, формула в столбце "J:J", находится в ячейки "J321", а последняя заполненная ячейка в столбце "C:C", "C78", значит формулу нужно протянуть от ячейки "J32" и до "J78". Полный ноль поэтому прошу, пожалуйста помогите, очень нужна помощь.
  • Вопрос задан
  • 786 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Вам нужно что-то типа такого

/**
 * @file Dragg down a formula
 * @url https://qna.habr.com/q/709715
 * */

/**
 * User action. Runs the snippet
 */
function run() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const base = sheet.getRange('C3:C');
  const colFormula = sheet.getRange('J3');
  draggDownFormulas_(base, colFormula);
}

/**
 * @param {GoogleAppsScript.Spreadsheet.Range} base
 * @param {GoogleAppsScript.Spreadsheet.Range} colFormula
 */
function draggDownFormulas_(base, colFormula) {
  const baseValues = base.getValues();
  const lastBase =
    baseValues.length - baseValues.reverse().findIndex(row => row[0] !== '');
  const colFormulaFormula = colFormula.getFormula();
  colFormula
    .getSheet()
    .getRange(base.getRow(), colFormula.getColumn(), lastBase)
    .setFormula(colFormulaFormula);
}


5e3c613d3eabc476526073.png

Обратите внимание
  • проверка начинается с 3й строки
  • колонка C заполнена на одну строку ниже, чем массив данных
  • копируется формула из J3
  • чтобы код работал, вам нужно включить V8


Сниппет
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Нужно, чтобы заполнение было в соседнем столбце. Так что проще всего будет перенести столбцы так, чтобы они были рядом. Например, столбец C:C можно перенести или скопировать (продублировать) в столбец I:I или K:K. Тогда в столбце J:J можно будет просто сделать двойной клик по нижнему правому углу в растягиваемой ячейке (то место, за которое вы обычно растягиваете) - и формула сама распространится до последней строки.
Ответ написан
Комментировать
@mailsergant
Доброго дня!
Здесь описан метод с активным листом таблицы: const sheet = SpreadsheetApp.getActiveSheet();

Подскажите, а если мне необходим скрипт для конкретной таблицы и листа (использовал ранее переменные с обращением SpreadsheetApp.openByUrl('xxxxx') и table.getSheetName('Лист1')) как мне правильно обратится к конкретному листу таблицы с этим скриптом? Спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы