@Clif1986

Как консолидировать данные из нескольких страниц?

Всем привет.

Подскажите не могу найти даже где можно копнуть.

Суть задачи.

Есть 5-6 страниц. Количество страницы будет добавляться, их название неизвестное (могут быть разные).
Нужно вытаскивать часть данных с этих страниц (размеры таблицы может отличаться) в одну общую (типа базы данных)

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

Я пробивал через "именованные диапазоны"
={INDIRECT(H1);INDIRECT(H2);INDIRECT(H3)}
где
Н1 Диапазон1
Н2 Диапазон2
Н3 Диапазон3
Но тогда нужно вручную добавлять диапазоны (что в целом не проблема) и прописывать страницу (что уже сложнее).

Самое сложно что я уперся, как можно вытянуть данные со всех листов документа, при условии что листы могут добавляться/ переименовываться.

Извините немного пропал, но продвинулся в своем проекте).

Ссылка на данные https://docs.google.com/spreadsheets/d/103yFBslcj8...

По страницам:
Агромол(станок 221) - это страница с данными (Диапазон данных 'Агромол(станок 221)'!B16:H42)
Лисопилка(пила 215) - это страница с данными (Диапазон данных 'Лисопилка(пила 215)'!B16:H34)
С этих листов будут копироваться данные. Диапазоны разные. Т.е. ширина одинаковая, разные кол-во строк

БД - это сборка данных с листов (промежуточный, технический лист)
Все данные - тут уже обрабатываться и выводиться необходимые данные.

Как я все реализовал:
- руками присваиваем имя необходимому диапазону (написал пару формул, чтобы имя сформировалось и было легко найти)
- на листе БД прописываю диапазоны (оранжевым)
- и дописываю в формулу ссылки на диапазоны - красным
={INDIRECT(A2);INDIRECT(A3)}

Все работает, но был совет пересобрать формулу, как это сделать? Или может еще есть вариант попроще?
т.е. что бы имя диапазона попадало в список "Диапазоны для БД" и потом дописывались в формулу

В скриптах есть функция которая "вытягивает" имя страницы, но при смене имени, скрипт повторно не срабатывает.
Была задумка при нажатии кнопки вводить имя листа:
sheet2 = ui.prompt('New Sheet Name?');
sheet2 = sheet.copyTo(ss).setName(sheet2.getResponseText());
но эта часть добавляет в самый конец всех листов, что есть неудобно. Можно настроить чтобы лист создавался слева или справа?
  • Вопрос задан
  • 3701 просмотр
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Соглашусь с @oshliaer, проще всего в таких исходных - делать формулу скриптом. Вот код для получения списка листов:
function getSheetNames(){
  return [SpreadsheetApp.getActiveSpreadsheet().getSheets().map(sheet=>sheet.getName())];
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы