Список листов Таблицы

Иногда необходимо получить список листов Таблицы для создания какой-то сложной формулы. На данный момент это сделать не так-то просто.


Существует несколько дополнений и примеров скриптов, которые решают вопросы "сквозной суммы" или, как еще говорят "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]
Данный метод обладает рядом существенных недостатков. Но в определенных случаях лучше использовать инструмент построения формул, чкм более изощренные и сложные подходы.
Другой вариант получения сквозной суммы обсуждается тут.

Комментарии

  1. Спасибо ! но что то выдает ошибку. Не подскажете в какую сторону смотреть. (кроме изучения мат.части ;-)))

    ОтветитьУдалить
  2. Error
    TypeError: Cannot read property 'indexOf' of undefined (line 11).

    ОтветитьУдалить
    Ответы
    1. К сожалению, я не вижу вашего кода. Попробуйте сделать копию из моего примера из этой статьи https://docs.google.com/spreadsheets/d/1UgwjNInvTCqK3JLJAome1teyolLQ9-5JcBRikX4F5CE/copy

      Удалить
    2. Не запускай скипрт, а просто сохарни его

      Удалить
  3. Супер. спасибо. а как сделать так чтобы список автоматически обновлялся при добавлении нового листа: ?

    ОтветитьУдалить
    Ответы
    1. К сожалению, событийная модель не позволяет сделать этого просто.

      Удалить

Отправить комментарий

Спасибо за ваше сообщение. Оно может быть не опубликовано сразу из-за того, что попало на предмодерацию. Дождитесь публикации сообщения. Спасибо за понимание.

Thank you for your message. It may not be published immediately due to the fact that it got to pre-moderation. Wait for the message to be published. Thank you for understanding.

Не нашли ответ? Пишите!

Имя

Электронная почта *

Сообщение *