Как отфильтровать значения, полученные по формуле в листах Google, не перемещая формулу? - PullRequest
0 голосов
/ 09 февраля 2020

Я использую функцию FILTER для перетаскивания данных с одной вкладки на листе на другую на основе критерия в столбце K на вкладке источника. Вкладка источника обновляется еженедельно (автомат c refre sh соединения BigQuery). Я хочу получить столбцы AI на вкладке источника, а затем разрешить пользователям редактировать столбцы KO, относящиеся к каждой строке, извлекаемой из вкладки источника.

Проблема в том, что я также хочу отсортировать диапазон, который я извлекаю из вкладки источника, по столбцу состояния на ежедневной основе. И я хочу, чтобы полная строка (включая введенный вручную col KO) также меняла порядок при сортировке, чтобы они оставались привязанными к значениям, которые я извлекаю из источника. Я не могу использовать функцию SORT, потому что тогда будут корректироваться только столбцы AI.

Я также не могу отфильтровать исходные данные, потому что критерий в столбце K - это назначение человека, и если я изменю порядок в По исходным данным это изменило бы назначение человека, сделав весь лист бесполезным.

Поэтому я добавил фильтры в верхний ряд вкладки, не связанной с исходным кодом, и планировал просто запустить макрос, который не был отфильтрован, а затем повторно отфильтровать лист и настроить триггер, чтобы он запускался автоматически ежедневно , Однако, когда я пытаюсь отфильтровать лист Z -> A, строка с функцией фильтра перемещается и запутывает весь лист вверх.

Можно ли в любом случае заблокировать формулу FILTER, чтобы она не двигалась при переупорядочении листа, но значения строк меняются?

Или есть способ вставить пустую строку ниже функции FILTER, чтобы я мог добавить фильтры к этой строке, а не к реальной строке с формулой в ней.

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

1 Ответ

0 голосов
/ 09 февраля 2020

использовать скрипт:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet2");                                   //SHEET NAME HERE
var range = sheet.getRange("A2:Z");                                        //RANGE HERE

function onEdit(e)  {
range.sort([{column: 4, ascending: false}, {column: 1, ascending: true}]); //SORT CRITERIA
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...