
У меня есть серия листов с разными названиями, например
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"))