Google表格中如何剔除{}合并QUERY结果产生的空行
解决方案
你可以在现有拼接公式的外层再套一层QUERY函数,直接过滤掉所有占位空行即可,无需修改原工作表结构,也不用脚本:
完整公式示例
=QUERY( { IFNA( QUERY('Week 1'!A2:Z33,"select Z, B, D, E where A = 'Bench Press' and D IS NOT NULL", 0), { "","","","" } ); IFNA( QUERY('Week 1'!A2:Z33,"select Z, F, H, I where A = 'Bench Press' and H IS NOT NULL", 0), { "","","","" } ); IFNA( QUERY('Week 1'!A2:Z33,"select Z, J, L, M where A = 'Bench Press' and L IS NOT NULL", 0), { "","","","" } ); IFNA( QUERY('Week 1'!A2:Z33,"select Z, N, P, Q where A = 'Bench Press' and P IS NOT NULL", 0), { "","","","" } ); IFNA( QUERY('Week 1'!A2:Z33,"select Z, R, T, U where A = 'Bench Press' and T IS NOT NULL", 0), { "","","","" } ) }, "SELECT * WHERE Col1 <> ''", 0 )
逻辑说明
- 外层
QUERY的第一个参数直接复用你原来的数组拼接结果,对于数组类型的数据源,QUERY会用Col1/Col2/Col3/Col4依次指代你返回的4列数据 - 过滤条件
WHERE Col1 <> ''会直接剔除所有第一列为空字符串的行,也就是你用IFNA返回的占位空行,仅保留有有效训练数据的条目 - 最后一个参数设为
0,表示不把结果第一行识别为表头,和你原有子QUERY的设置保持一致
优化补充
如果存在有效数据第一列(Z列)本身为空的场景,可以把过滤条件改成更通用的写法,只要任意一列有内容就会保留:
"SELECT * WHERE Col1 <> '' OR Col2 <> '' OR Col3 <> '' OR Col4 <> ''"
后续新增周次的子QUERY时,只需要往中间大括号里添加对应语句即可,外层过滤逻辑不需要调整。
内容的提问来源于stack exchange,提问作者Tom J Nowell
相关产品推荐
相关产品推荐

