У меня есть стол, состоящий из нескольких листов. Таблица должна обрабатываться ежедневно несколькими пользователями одновременно. Основное редактирование выполняется в Sheet1. Лист 2 состоит только из запроса и формул.
Пример листа 1:
- Лист 1 состоит из 2500 строк и 17 столбцов.
Начиная со строки 12 (строка 11 является строкой заголовка. Вышеприведенные строки содержат ссылки на формулы), столбцы A, B заполняются пользователем. Столбцы C-H содержат различные формулы (например, запросы GoogleFinance). Столбцы G-M должны быть снова заполнены пользователем. Наконец, в столбцах N-Q снова есть формулы.
Цель: автоматическое расширение / удаление формул в столбцах CH и NQ в зависимости от того, был ли контент добавлен / удален в столбцах A и B. Процесс удаления должен выполняться построчно, чтобы также удалить оставшийся пользовательский контент в столбцах GM.
Лист также можно сортировать.
Пример листа 2:
- Лист 2 состоит из 1500 строк и 11 столбцов.
Начиная со строки 9 (строка 9 также является строкой заголовка. Строки выше содержат ссылки на формулы), столбцы A-I заполняются результатами запроса (который находится в ячейке A9). Запрос получает определенное содержимое из листа 1 и является динамическим. Столбцы J-K содержат формулы.
Цель: автоматически расширять / удалять формулы в столбцах J-K в зависимости от того, был ли контент добавлен / удален в столбцах A-I (по запросу).
Для расширения, удаления и сортировки я использовал приведенные ниже примеры кода.
К сожалению, показанные коды не соответствуют требованиям, описанным в созвездии. Поэтому я был бы очень благодарен за лучшее решение.
function fillDownFormulaTD(){
Sheet = "sheet1";
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(Sheet);
var lr = ss.getLastRow();
var Rng1 = ss.getRange(1, 2, lr-1);
ss.getRange("").setFormula('');
ss.getRange("").copyTo(Rng1);
}
function removeEmptyRows(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Ticker-Datenbank');
var maxRows = sheet.getMaxRows();
var lastRow = sheet.getLastRow();
sheet.deleteRows(lastRow+1, maxRows-lastRow-20);
}
function Sortieren(){
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A11:Q11')
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getActiveRange().sort({column: 3, ascending: true});
spreadsheet.getRange('A11').activate();
}