Google Sheets双QUERY组合公式空单元格消除方案求助
解决Google Sheets组合QUERY空行问题
修改后的公式(推荐方案)
=QUERY({ IFNA(QUERY(TRANSPOSE(DATA!AO1:BZ2), "select Col1 where Col2 > 0", 0),); IFNA(QUERY(ARRAYFORMULA(TO_TEXT(TRANSPOSE(DATA!CA1:CF2))), "select Col2 where Col1 contains '' or Col1 contains 'Ship'", 0),) }, "select * where Col1 is not null", 0)
问题原因
原公式中,当第一个QUERY无数据返回时,IFNA返回的是空字符串"",这会在纵向拼接的数组中占据一行空单元格,导致第二个QUERY的结果被空行隔开。
解决思路
- 将
IFNA的默认返回值从空字符串""改为空数组(即省略第二个参数,只写,)),这样第一个QUERY无结果时,不会向数组中添加空行。 - 最后用外层
QUERY过滤掉所有空行,确保最终结果中没有多余的空单元格。
备选方案(条件判断拼接)
如果不想用外层QUERY,也可以通过条件判断直接决定是否拼接第一个结果:
=IF( ISERROR(QUERY(TRANSPOSE(DATA!AO1:BZ2), "select Col1 where Col2 > 0", 0)), IFNA(QUERY(ARRAYFORMULA(TO_TEXT(TRANSPOSE(DATA!CA1:CF2))), "select Col2 where Col1 contains '' or Col1 contains 'Ship'", 0),), { QUERY(TRANSPOSE(DATA!AO1:BZ2), "select Col1 where Col2 > 0", 0); IFNA(QUERY(ARRAYFORMULA(TO_TEXT(TRANSPOSE(DATA!CA1:CF2))), "select Col2 where Col1 contains '' or Col1 contains 'Ship'", 0),) } )
这个方案先检查第一个QUERY是否出错(无结果),如果是则直接返回第二个QUERY的结果;否则拼接两个结果。
内容的提问来源于stack exchange,提问作者D3M1Y0
相关产品推荐
相关产品推荐

