Google Sheets跳过缺失工作表的多表数据提取及标识需求
多表自动提取并跳过缺失工作表方案
直接用以下公式就能实现需求,自动遍历1-52周的工作表,跳过不存在的表,同时把对应工作表的周标识填充到数据首列:
=QUERY(FLATTEN(ARRAYFORMULA(IFERROR( ARRAYFORMULA(IF(LEN(INDIRECT("'"&SEQUENCE(52)&".WEEK'!B9:B")), {INDIRECT("'"&SEQUENCE(52)&".WEEK'!C5")&"", INDIRECT("'"&SEQUENCE(52)&".WEEK'!B9:G")}, "")) ))), "where Col1 is not null", 0)
公式拆解说明:
SEQUENCE(52):生成1到52的数字,自动拼接成'1.WEEK'到'52.WEEK'的工作表名称。INDIRECT:根据拼接的字符串引用对应工作表的单元格/区域,实现动态引用不同工作表。IF(LEN(...)):判断每个工作表的B9列是否有内容,只提取有数据的行,避免空行混入结果。IFERROR:遇到不存在的工作表时(比如8.WEEK),会自动忽略错误,跳过该表的提取。FLATTEN:把所有工作表的提取结果合并成一个连续的二维数组。QUERY:过滤掉合并后数组中的空行,只保留有效数据行。
注意事项:
- 如果C5的周标识是纯文本,
&""是为了确保它和后面的B9:G区域格式匹配,避免数组维度报错。 - 不管哪些周的工作表缺失,公式都会自动跳过,无需手动修改公式内容。
- 不同工作表中B9:G的行数不一致也没关系,公式会自动适配每个表的有效数据行。
内容的提问来源于stack exchange,提问作者Esat Kurtul
相关产品推荐
相关产品推荐

