在 Excel 中,你可以使用 RANK, COUNTIF, 或 SUMPRODUCT 等函数来计算指定列在指定分组下的排名。常见的方法如下:
方法 1:使用 RANK + IF(适用于 Excel 365 / 2019+ 版本)
如果你的 Excel 版本支持动态数组,可以使用 RANK 结合 IF 计算分组内排名。
示例
假设你的数据如下:
| A列(分组) | B列(数值) | C列(排名) |
|---|---|---|
| A | 80 | |
| A | 90 | |
| A | 85 | |
| B | 75 | |
| B | 95 | |
| B | 85 |
你希望在 C 列计算 B 列在 A 列分组中的排名。
在 C2 中输入以下公式:
=RANK.EQ(B2, FILTER(B$2:B$7, A$2:A$7=A2))
然后向下填充公式。
解释
FILTER(B$2:B$7, A$2:A$7=A2):筛选出与 A2 组相同的所有 B 列值。RANK.EQ(B2, …):计算 B2 在该分组中的排名。
方法 2:使用 SUMPRODUCT(适用于所有 Excel 版本)
如果你的 Excel 版本较旧(如 Excel 2016 或更早),可以使用 SUMPRODUCT 实现。
在 C2 输入:
=SUMPRODUCT((A$2:A$7=A2)*(B$2:B$7>B2))+1
然后向下填充。
解释
(A$2:A$7=A2):筛选出当前行所属的分组。(B$2:B$7>B2):计算当前行的值大于其他同行的数量。SUMPRODUCT(...) + 1:统计比当前值大的个数并加 1,即排名。
方法 3:使用 COUNTIFS(适用于所有 Excel 版本)
在 C2 输入:
=COUNTIFS(A$2:A$7, A2, B$2:B$7, ">"&B2) + 1
然后向下填充。
解释
COUNTIFS(A$2:A$7, A2, B$2:B$7, ">"&B2):计算当前分组中比 B2 更大的数量。+1:得到排名。
这几种方法都可以实现分组内排名,你可以根据自己的 Excel 版本选择合适的方法。