Google Sheets中查询排序函数的分组及空值排除问题
Google Sheets 公式修正:排除空白单元格并返回分组前5条数据
问题根源
你当前使用的公式中,计算分组序号时引用了不同范围的排序结果($A$3:$D$326 和 $A$3:$H$326),导致匹配错位,无法正确生成每个分组内的排序位置,因此仅返回部分结果。
修正后的公式
=ArrayFormula( QUERY( { SORT(FILTER('Data Tracking'!$A$3:$D$326, 'Data Tracking'!$C$3:$C$326<>""), 2, TRUE, 3, FALSE), COUNTIFS( INDEX(SORT(FILTER('Data Tracking'!$A$3:$D$326, 'Data Tracking'!$C$3:$C$326<>""), 2, TRUE, 3, FALSE),,2)&"", "="&INDEX(SORT(FILTER('Data Tracking'!$A$3:$D$326, 'Data Tracking'!$C$3:$C$326<>""), 2, TRUE, 3, FALSE),,2)&"", ROW(SORT(FILTER('Data Tracking'!$A$3:$D$326, 'Data Tracking'!$C$3:$C$326<>""), 2, TRUE, 3, FALSE)), "<="&ROW(SORT(FILTER('Data Tracking'!$A$3:$D$326, 'Data Tracking'!$C$3:$C$326<>""), 2, TRUE, 3, FALSE)) ) }, "Select Col2, Col1, Col3, Col4 where Col5<=5", 0 ) )
公式逻辑说明
- 过滤空白行:先用
FILTER排除Data Tracking标签页中C列(第3列)为空的行,避免无效数据干扰排序。 - 排序数据:对过滤后的结果按B列(第2列)升序、C列(第3列)降序排序,匹配你需要的排序规则。
- 生成组内序号:通过
COUNTIFS为每个B列相同的分组生成组内递增序号,确保每个分组能统计出前5条数据。 - 筛选输出:用
QUERY筛选组内序号≤5的行,按需求输出指定列(B、A、C、D列)。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

