我有一系列不同名称的表格,例如
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"))