我正在尝试在Google表格中设置任务管理器。我为每个项目创建了一个新工作表,然后当我在单元格中输入工作表名称时,我将构建一个字符串,可用于查询并将所有数据提取到主工作表中。
当我添加一个项目ID时,我会使用串联来构建一个我想用作查询数据的字符串:
公式:
=IFERROR(ARRAYFORMULA(if(isblank(A3),"",CONCATENATE("'", A3, "'", "!A87:M"))))
输入:
Cell A3 - Sheet1
Cell A4 - Sheet2
输出:
Cell B3 - 'Sheet1'!A87:M
Cell B4 - 'Sheet2'!A87:M
然后我使用该输出为查询建立数据。
方法1:
=ARRAYFORMULA(FILTER(B3:B, NOT(B3:B = "")))
输出:
Cell C2 - 'Sheet1'!A87:M
Cell C3 - 'Sheet2'!A87:M
方法2:
=join(";", filter(B2:B, not(B2:B = "")))
输出:
Cell C4 - '19654'!A87:M;'19984'!A87:M;'Sheet5'!A87:M
然后我将输出传递到查询中,以尝试从每个项目返回数据:
=query({INDIRECT(C2)},"Select Col1, Col2, Col3 where Col1 is not null")
如果我使用方法1,则输出只是第一个单元格的结果。它不会从整个arrayformula的结果中得到一切
如果我使用方法2,则输出将返回ref错误消息:
Function INDIRECT parameter 1 value is ''Sheet1'!A87:M;'Sheet2'!A87:M;'. It is not a valid cell/range reference.
如果我将每行手动输入到查询数据中,我就能使查询工作:
=query({INDIRECT(C2); INDIRECT(C3)},"Select Col1, Col2, Col3 where Col1 is not null")
但是我想这样做,以便每当我输入新的工作表名称时,公式都会更新并返回所有页面的结果。
任何帮助将不胜感激,并在此先感谢您。