Я работаю в Google Sheets и хочу использовать диапазон ячеек, каждая из которых содержит имя листа, чтобы построить массив из строк на каждом ссылочном листе. Но я хочу, чтобы массив оставался динамическим, чтобы при изменении исходного диапазона массив обновлялся самостоятельно.
Моя рабочая книга здесь . Я пытаюсь создать шаблон листа для выходных и дней недели (Sheet: Weekday Template), где я могу выбирать блоки с помощью раскрывающихся списков (из листа: списки). А затем на листе программы каждого дня (Sheet: Monday Monday) он заполняется с использованием строк из блочных листов (Sheet: Morning Music Block).
Я обманул программу среды (Sheet: Wednesday Program),Я сделал это вручную так, как я хочу. Но пришлось использовать неустойчивую формулу:
=query({'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Antonye Holyde Block'!B3:D;'Mike Macintosh Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Morning Music Block'!B3:D;'Joe Focht Block'!B3:D;'Skip Heitzig Block'!B3:D;'Pancho Juarez Block'!B3:D;'Damian Kyle Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Afternoon Music Block'!B3:D;'J. Vernon McGee Block'!B3:D;'Mike Macintosh Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Evening Music Block'!B3:D;'Joe Focht Block'!B3:D;'J. Vernon McGee Block'!B3:D;'Skip Heitzig Block'!B3:D;'Pancho Juarez Block'!B3:D;'Damian Kyle Block'!B3:D;'Antonye Holyde Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D},"Select * where Col1 is not null")
Я могу сгенерировать этот ужасный текст массива с помощью:
=join(";",ArrayFormula("'"&If(A1,query({indirect("'"&D1&" Modifier'!D2:D")},"Select * where Col1 is not null "),query({'Weekday Template'!D2:D},"Select * where Col1 is not null "))&" Block'!B3:D"))
(ИУ меня это скрыто в «Программе понедельника»! C1, для справки.)
Но когда я пытаюсь вставить этот массив, построенный из запросов, в запрос, я получаю внешний запрос, пытающийся выполнить его с текстом,и не следуя ссылкам вообще.
=query({join(";",ArrayFormula("'"&If(A1,query({indirect("'"&D1&" Modifier'!D2:D")},"Select * where Col1 is not null "),query({'Weekday Template'!D2:D},"Select * where Col1 is not null "))&" Block'!B3:D"))},"Select * where Col1 is not null")
Выходы:
'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Antonye Holyde Block'!B3:D;'Mike Macintosh Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Morning Music Block'!B3:D;'Joe Focht Block'!B3:D;'Skip Heitzig Block'!B3:D;'Pancho Juarez Block'!B3:D;'Damian Kyle Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Afternoon Music Block'!B3:D;'J. Vernon McGee Block'!B3:D;'Mike Macintosh Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Evening Music Block'!B3:D;'Joe Focht Block'!B3:D;'J. Vernon McGee Block'!B3:D;'Skip Heitzig Block'!B3:D;'Pancho Juarez Block'!B3:D;'Damian Kyle Block'!B3:D;'Antonye Holyde Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D
И пробуя по-другому:
=query({indirect("'"&If(A1,query({indirect("'"&D1&" Modifier'!D2:D")},"Select * where Col1 is not null "),query({'Weekday Template'!D2:D},"Select * where Col1 is not null "))&" Block'!B3:D")},"Select * where Col1 is not null")
Выходы:
Interrupt Station ID Serial:ID
Spot Promo Album:%Block%
Fill The Word of Promise Serial:TWoP;Announce:5
Spot Sandy Adams Serial:Sandy;Album:%Block%
Fill Music Genre:Worship
Это правильный, но частичный результат, он запрашивает только первый из моих 39 диапазонов.
Даже нет:
=ArrayFormula(indirect("{"&join(";","'"&If(A1,query({indirect("'"&D1&" Modifier'!D2:D")},"Select * where Col1 is not null "),query({'Weekday Template'!D2:D},"Select * where Col1 is not null "))&" Block'!B3:D")&"}"))
... работает. Он просто говорит:
Function INDIRECT parameter 1 value is '{'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Antonye Holyde Block'!B3:D;'Mike Macintosh Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Morning Music Block'!B3:D;'Joe Focht Block'!B3:D;'Skip Heitzig Block'!B3:D;'Pancho Juarez Block'!B3:D;'Damian Kyle Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Afternoon Music Block'!B3:D;'J. Vernon McGee Block'!B3:D;'Mike Macintosh Block'!B3:D;'Sam Allen Block'!B3:D;'Chuck Smith Block'!B3:D;'Greg Laurie Block'!B3:D;'Jon Courson Block'!B3:D;'Evening Music Block'!B3:D;'Joe Focht Block'!B3:D;'J. Vernon McGee Block'!B3:D;'Skip Heitzig Block'!B3:D;'Pancho Juarez Block'!B3:D;'Damian Kyle Block'!B3:D;'Antonye Holyde Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D;'Bible Reading NKJV Block'!B3:D}'. It is not a valid cell/range reference.
Может кто-нибудь помочь мне решить эту проблему, не прибегая к Сценариям приложения?