如何解决ARRAYFORMULA+IMPORTRANGE仅导入首个工作表数据的问题?
纯Google Sheets公式实现多工作表数据导入问题
问题详情
- 需求:仅用纯Google Sheets公式,从同一电子表格的12个工作表(命名为1到12)中批量导入E2:F500区域的内容,同时过滤掉F列为空的行。
- 当前使用的公式:
=FILTER(ARRAYFORMULA(IMPORTRANGE(A1,ARRAYFORMULA(SEQUENCE(12)&"!E2:F500"))),ARRAYFORMULA(IMPORTRANGE(A1,ARRAYFORMULA(SEQUENCE(12)&"!F2:F500")))<>"") - 遇到的问题:公式仅返回工作表1的E2:F500内容,其他工作表的数据无法导入,调整ARRAYFORMULA位置也未解决。
解决方法
方法1:手动拼接数组(直观易操作)
直接把12个工作表的范围用{}纵向拼接,再用FILTER过滤空行:
=FILTER({1!E2:F500;2!E2:F500;3!E2:F500;4!E2:F500;5!E2:F500;6!E2:F500;7!E2:F500;8!E2:F500;9!E2:F500;10!E2:F500;11!E2:F500;12!E2:F500}, {1!F2:F500;2!F2:F500;3!F2:F500;4!F2:F500;5!F2:F500;6!F2:F500;7!F2:F500;8!F2:F500;9!F2:F500;10!F2:F500;11!F2:F500;12!F2:F500}<>"")
方法2:自动生成工作表范围(适合工作表数量多的情况)
用REDUCE结合SEQUENCE循环合并数据,无需手动逐个写工作表名:
=FILTER(REDUCE("",SEQUENCE(12),LAMBDA(a,v,{a;INDIRECT(v&"!E2:F500")})),REDUCE("",SEQUENCE(12),LAMBDA(a,v,{a;INDIRECT(v&"!F2:F500")}))<>"")
关键说明:同一电子表格内不需要用IMPORTRANGE(该函数用于跨文档数据导入),之前公式失效的核心原因就是错误使用了IMPORTRANGE,且它无法配合SEQUENCE批量解析多个工作表范围,换成INDIRECT即可正常引用同一文档内的工作表。
内容的提问来源于stack exchange,提问作者UnseenPilot
相关产品推荐
相关产品推荐

