如何在QUERY函数中统计空值并修正结果显示行位置?
解决Google Sheets QUERY函数空值分组统计错位问题
问题原因
原QUERY公式仅返回满足N contains 'person2' and W contains $C2条件且V列非空的分组,若空分组(V列为空)无匹配数据,QUERY不会生成对应行,导致有数据的分组结果向上错位填充到空缺行(比如本该显示在H14:J14的结果出现在H7:J7)。
解决方案
方案1:预设分组匹配,确保结果位置准确
如果H7:H14是你需要固定显示的分组列表(含H14的空分组),可使用ARRAYFORMULA+VLOOKUP组合公式,让每个分组对应到指定行,无数据的分组显示0:
=ARRAYFORMULA( IFNA( VLOOKUP( H7:H14, QUERY(Archiv!A1:AA,"select V, count(R), sum(U) where N contains 'person2' and W contains '"&$C2&"' group by V label count(R) '', sum(U) ''",1), {2,3}, FALSE ), 0 ) )
将上述公式输入H7单元格,会自动填充H7:J14的结果:
- 先通过QUERY获取所有有数据的分组统计
- 再用VLOOKUP匹配到预设的分组行
- 无匹配结果的分组(含空分组)自动显示0
方案2:修改QUERY显示空值分组
若只需QUERY返回所有满足条件的分组(包括V为空的分组,前提是存在对应行),可修改原公式,用COALESCE处理V列空值,确保分组包含空值项:
=QUERY( Archiv!A1:AA, "select COALESCE(V, ''), count(R), sum(U) where N contains 'person2' and W contains '"&$C2&"' group by COALESCE(V, '') limit 12 label COALESCE(V, '') '', count(R) 'Tage', sum(U) 'Anzahl'", 1 )
COALESCE(V, '')会将V列的空值转为空字符串,避免QUERY过滤掉空值分组,保证所有符合条件的分组都能显示。
内容的提问来源于stack exchange,提问作者Chalet Adelheid
相关产品推荐
相关产品推荐

