如何结合带条件的QUERY函数显示指定数量的末尾行?
Google Sheets QUERY函数:筛选特定列并仅显示符合条件的最后3行
需求说明
需要在Google Sheets中同时实现两个功能:
- 筛选出符合指定条件的行,并展示特定列数据
- 仅保留上述筛选结果中的最后3行
现有两个单独生效的公式,但无法同时满足需求:
- 能筛选特定列符合条件数据,但无法限制行数:
=ARRAYFORMULA(QUERY({A2:F8,ROW(A2:F8)},"select Col1,Col2,Col5,Col6 where Col3='"&$H$1&"'",1)) - 能取最后3行,但无法筛选条件和特定列:
=QUERY(A2:F8,"select * offset "&COUNT(A2:A)-3)
解决方案
方法1:双层QUERY(保持原顺序)
通过内层QUERY筛选并倒序取前3行,外层QUERY恢复原数据顺序:
=QUERY(QUERY(A2:F8,"select A,B,E,F,ROW(A) where C='"&$H$1&"' order by ROW(A) desc limit 3",1),"select Col1,Col2,Col3,Col4 order by Col5 asc",1)
- 内层逻辑:筛选符合
C列=H1条件的A、B、E、F列,同时带上行号,按行号倒序排列后取前3行(即原数据中最后3条符合条件的记录) - 外层逻辑:去掉行号列,按原行号正序排列,恢复数据原本的顺序
方法2:INDEX+QUERY(直接取最后3行)
先筛选所有符合条件的数据,再用INDEX定位最后3行:
=INDEX(QUERY(A2:F8,"select A,B,E,F where C='"&$H$1&"'",1),MAX(1,COUNTA(QUERY(A2:F8,"select A where C='"&$H$1&"'",1))-2):COUNTA(QUERY(A2:F8,"select A where C='"&$H$1&"'",1)),0)
- 先用
QUERY获取所有符合条件的特定列数据 - 用
COUNTA统计筛选结果的行数,通过MAX(1, 行数-2)确保当结果不足3行时不会出错 - 用
INDEX提取从倒数第3行到最后一行的所有列数据
简化版(无需保持原顺序)
如果不需要保留原数据的顺序,直接用单层QUERY倒序取前3行即可:
=QUERY(A2:F8,"select A,B,E,F where C='"&$H$1&"' order by ROW(A) desc limit 3",1)
内容的提问来源于stack exchange,提问作者raphaelsword
相关产品推荐
相关产品推荐

