Иногда необходимо получить список листов Таблицы для создания какой-то сложной формулы. На данный момент это сделать не так-то просто.
Существует несколько дополнений и примеров скриптов, которые решают вопросы "сквозной суммы" или, как еще говорят "3D массивов". Все они в основном специализированы и не позволяют сделать главного - получить список листов.
Идея заключается в том, чтобы получить список листов Таблицы и на основе этого списка создать формулу. Т.е. динамики будет мало, будет много ручной работы, но способ, в отстствии чего-либо другого, вполне пригодный.
Во-первых, необходимо в текущую Таблицу в редактор скриптов добавить и сохранить следующий код: Согласен, немного отталкивает, и к этим вещам необходимо привыкнуть. Надеюсь, что не навсегда ;-)
Во-вторых, необходимо выбрать лист, который будет использоваться для построения формул. Чтобы получить список листов достаточно ввести формулу:
Данный метод обладает рядом существенных недостатков. Но в определенных случаях лучше использовать инструмент построения формул, чкм более изощренные и сложные подходы.
Другой вариант получения сквозной суммы обсуждается тут.
Пример ниже выводит список листов/диапазонов в виде строки или массива. Он не производит вычисления над данными.Если читатель не знаком со скриптами Google Apps Script, то это хороший повод попробовать. Как создать скрипт и добавить код, описано в Документе Google Apps Script. Начало. Нужны они вам или нет?
Идея заключается в том, чтобы получить список листов Таблицы и на основе этого списка создать формулу. Т.е. динамики будет мало, будет много ручной работы, но способ, в отстствии чего-либо другого, вполне пригодный.
Во-первых, необходимо в текущую Таблицу в редактор скриптов добавить и сохранить следующий код: Согласен, немного отталкивает, и к этим вещам необходимо привыкнуть. Надеюсь, что не навсегда ;-)
Во-вторых, необходимо выбрать лист, который будет использоваться для построения формул. Чтобы получить список листов достаточно ввести формулу:
=СПИСОКЛИСТОВ()
Результат:
Список всех листовЧтобы получить строку из списка листов, пригодную для вставки в формулу, например,
Строка для формулы
Строка для формулы с исключениями
Применение формулы
Sheet5
Sheet6
Sheet7
Sheet8
Список листов
О Таблице
SUM()
, можно сделать так:
=СПИСОКЛИСТОВ("A3")
Результат:
'Список всех листов'!A3;'Строка для формулы'!A3;'Строка для формулы с исключениями'!A3;'Применение формулы'!A3;'Sheet5'!A3;'Sheet6'!A3;'Sheet7'!A3;'Sheet8'!A3;'Список листов'!A3;'О Таблице'!A3Теперь строку, которую вернула эта функция, возможно добавить в формулу и использовать в Таблице.Например, Результат:
=SUM('Список всех листов'!A3;'Строка для формулы'!A3;'Строка для формулы с исключениями'!A3;'Применение формулы'!A3;'Sheet5'!A3;'Sheet6'!A3;'Sheet7'!A3;'Sheet8'!A3;'Список листов'!A3;'О Таблице'!A3)
Возможно создать список, исключив некоторые листы:
=СПИСОКЛИСТОВ("A3";"Лист1,Список листов,Sheet1")
Необходимо добавить незначащий диапазон для того, чтобы функция пересчитывалась:
=СПИСОКЛИСТОВ("A3";"Лист1,Список листов,Sheet1";A:Z)
С результатом работы можно ознакомиться в Таблице Список листов [gdriveru.blogspot.ru][sheetslist]Данный метод обладает рядом существенных недостатков. Но в определенных случаях лучше использовать инструмент построения формул, чкм более изощренные и сложные подходы.
Другой вариант получения сквозной суммы обсуждается тут.
Супер, спасибо
ОтветитьУдалитьОчень рад!
УдалитьСпасибо ! но что то выдает ошибку. Не подскажете в какую сторону смотреть. (кроме изучения мат.части ;-)))
ОтветитьУдалитьПришлите свой пример на help@contributor.pw
УдалитьError
ОтветитьУдалитьTypeError: Cannot read property 'indexOf' of undefined (line 11).
К сожалению, я не вижу вашего кода. Попробуйте сделать копию из моего примера из этой статьи https://docs.google.com/spreadsheets/d/1UgwjNInvTCqK3JLJAome1teyolLQ9-5JcBRikX4F5CE/copy
УдалитьСупер. спасибо. а как сделать так чтобы список автоматически обновлялся при добавлении нового листа: ?
ОтветитьУдалитьК сожалению, событийная модель не позволяет сделать этого просто.
Удалить