![在 SUM‘between:sheets’公式中获取 Excel 工作表名称](https://linux22.com/image/1510441/%E5%9C%A8%20SUM%E2%80%98between%3Asheets%E2%80%99%E5%85%AC%E5%BC%8F%E4%B8%AD%E8%8E%B7%E5%8F%96%20Excel%20%E5%B7%A5%E4%BD%9C%E8%A1%A8%E5%90%8D%E7%A7%B0.png)
我有一系列不同名称的表格,例如
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"))