Получить имя листа Excel в формуле SUM 'between:sheets'

Получить имя листа Excel в формуле SUM 'between:sheets'

У меня есть серия листов с разными названиями, например

start, wc 17 Oct,  wc 24 Oct, wc 31 Oct

Чтобы сохранить текущую сумму различных чисел на каждом листе, я просто использую следующее на каждом листе:

=SUM('start:wc 24 Oct'!B1)

Затем следующий лист,

=SUM('start:wc 31 Oct'!B1)

И так далее и тому подобное. Я знаю, что можно получить имя текущего листа с помощью=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)

Однако есть ли способ объединить эти два

=SUM("'start:"&MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)&'!B1)

Каков правильный синтаксис, чтобы приведенное выше работало, если это возможно?

Я пробовал использоватьINDIRECT

=SUM(INDIRECT("'start:"&MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)&"'!B1", TRUE))

Однако это постоянно выдает #REF!ошибку.

решение1

Одним из методов было бы добавление списка всех листов на startлист.

Это можно сделать динамически, добавив именованный диапазон. В менеджере имен используйте следующую формулу:

=GET.WORKBOOK(1)

И назовите это как-нибудь (я использовал test)

введите описание изображения здесь

Затем в Start!A1 введите:

=IFERROR(MID(INDEX(test,ROW(1:1)),FIND("]",INDEX(test,ROW(1:1)))+1,999),"")

И перетащите/скопируйте вниз. Это создаст список листов в том порядке, в котором они отображаются на вкладках.

Затем используйте эту формулу в нужной вам ячейке для вычисления суммы:

=SUMPRODUCT(SUMIF(INDIRECT("'" & INDEX('start'!A:A,MATCH("start",'start'!A:A,0)):INDEX('start'!A:A,MATCH(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),'start'!A:A,0)) & "'!B1"),"<>0"))

Связанный контент