这个公式 =SORT(FILTER($A$2:$B$17, $B$2:$B$17>=LARGE($B$2:$B$17, $E$1)), 2, -1)
的作用是 筛选出成绩排名前N的学生,并按成绩降序排列。下面逐步拆解它的各个部分:
1. LARGE($B$2:$B$17, $E$1)
- 作用:返回指定范围内第N大的值。
- 参数:
$B$2:$B$17
:成绩列(B2到B17)。$E$1
:指定要取第几大的值(这里是3,即第3高的成绩)。
- 示例:
如果$E$1=3
,LARGE
会返回第3高的成绩(比如99、100、90中的第3高是90)。
2. FILTER($A$2:$B$17, $B$2:$B$17>=LARGE(...))
- 作用:筛选出成绩≥第N大值的所有学生数据。
- 参数:
$A$2:$B$17
:原始数据范围(姓名和成绩)。$B$2:$B$17>=LARGE(...)
:条件(成绩≥第N大的值)。
- 逻辑:
假设第3高的成绩是90,则筛选出所有成绩≥90的学生(如100、99、90等)。
3. SORT(..., 2, -1)
- 作用:将筛选结果按指定列降序排列。
- 参数:
- 第1参数:
FILTER
返回的结果。 2
:按第2列(成绩)排序。-1
:降序排列(1
为升序)。
- 第1参数:
- 结果示例:
输出按成绩从高到低排列的姓名和成绩,例如:
孙老三 94
赵老一 81
郑老七 81
---
### **公式整体逻辑**
1. **找阈值**:用 `LARGE` 确定第N名(如第3名)的成绩值(如90)。
2. **筛选数据**:用 `FILTER` 提取所有成绩≥90的学生。
3. **排序结果**:用 `SORT` 将筛选结果按成绩从高到低排列。
---
### **适用场景**
- 动态获取前N名(如TOP 3、TOP 5)的学生名单。
- 自动更新:当原始数据或`$E$1`的值变化时,结果会实时调整。
---
### **注意事项**
1. **Excel版本**:需支持动态数组的Excel 365或2021版。旧版需用其他方法(如`INDEX+MATCH`)。
2. **并列排名**:如果第N名有并列(如两个90分),会全部输出(可能多于N条结果)。
3. **绝对引用**(`$`):确保公式拖动时范围不变。
示例下载: https://download.youkuaiyun.com/download/zheng15ddi/90543130