You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过工作表函数筛选并排序符合条件的记录(不使用数据透视表)

如何通过工作表函数筛选并排序符合条件的记录(不使用数据透视表)

没问题!完全可以用工作表函数实现你的需求,不用数据透视表也能搞定。我来帮你拆解步骤,修正你之前的问题,再给出合适的公式方案~

先说说你现有公式的问题

你之前写的公式 =INDEX($A$1:$A$4, SMALL(IF($B$1:$B$4>4,ROW($B$1:$B$1)), ROW())) 有几个小疏漏:

  • 条件写反了:你要筛选分数≤4的记录,但公式里用了$B$1:$B$4>4,刚好把需要的结果排除了
  • 行号范围错误:ROW($B$1:$B$1)只取了第一行的行号,应该覆盖整个数据范围(比如你的数据实际是5行,应该写ROW($B$1:$B$5))
  • 没处理排序和重复项:公式逻辑没结合分数排序,也无法应对像Claire和Evie这种同分数的情况

解决方案分两种情况(兼容新旧版Excel)

情况1:Excel 365/2021(支持动态数组,最简便)

一个公式就能一步完成筛选+排序,在D1单元格直接输入:

=SORT(FILTER(A1:B5,B1:B5<=4),2,1)
  • FILTER(A1:B5,B1:B5<=4):先筛选出B列分数≤4的所有行
  • SORT(...,2,1):把筛选后的结果按第2列(分数)升序排列(1代表升序,换成2就是降序)

输入后公式会自动溢出到D、E列,直接得到你想要的结果:

DE
Claire2
Evie2
Anna4

情况2:旧版Excel(无动态数组,用数组公式)

如果你的Excel不支持动态数组,就分两列写公式,输入后必须按Ctrl+Shift+Enter确认(数组公式会自动在前后加上{}):

  1. E列(排序后的分数)
    在E1单元格输入,然后下拉到E3:
=SMALL(IF($B$1:$B$5<=4,$B$1:$B$5,""),ROW())

这个公式会依次提取符合条件的分数里的第1小、第2小、第3小值,自动完成升序排序。

  1. D列(对应姓名,处理重复分数)
    在D1单元格输入,然后下拉到D3:
=INDEX($A$1:$A$5,MATCH(1,($B$1:$B$5=E1)*(COUNTIF($D$1:D1,$A$1:$A$5)=0),0))

公式逻辑:

  • $B$1:$B$5=E1:找到所有分数等于当前E列值的行
  • COUNTIF($D$1:D1,$A$1:$A$5)=0:确保这个姓名还没在D列上方出现过(避免重复提取)
  • MATCH(1,...):找到同时满足两个条件的第一个行号,再用INDEX取出对应姓名

这样就能得到和目标完全一致的结果啦!

备注:内容来源于stack exchange,提问作者MyDaftQuestions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:30:28