从 Excel 列表内提取出每个分组的前 3 大的值,且降序排列

很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。

如何提取组内的前若干或末若干名?这个要求不太好办的。


一般提到分组就首先会想到数据透视表,但是透视表对于值无法不聚合,所以换个思路,用函数,朴素的函数。


案例:


统计出下图 1 中每种物资的前三名数量,效果如下图 2 所示。


解决方案:


1. 在 F2 单元格中输入以下公式 --> 按 Ctrl+Shift+Enter 键结束 --> 向右向下拖动公式:

=LARGE(($C$2:$C$30=F$1)*($D$2:$D$30),ROW(A1))


公式释义:

  • $C$2:$C$30=F$1:
    • 查找区域 $C$2:$C$30 中所有与 F$1 值相等的单元格,返回由结果 true 或 false 组成的一组数组;
    • 此处 F$1 必须列相对引用,而行绝对引用;
  • ...*($D$2:$D$30):
    • 将上述的 true 或 false 与区域 $D$2:$D$30 中的值依次相乘,结果为 D 列的值或 0;
    • 也就是列出 F1 单元格中物资的所有对应的数量;
  • LARGE(...,ROW(A1)):
    • large 函数的作用是返回数据集中第 k 个最大值;语法为 LARGE(要查找的区域,第 k 大);
    • 此处 row(a1) 的结果为 1,因此就是返回第一大的值;
    • 当公式下拉,变成 row(a2),结果为 2,从而返回第二大的值
原文链接:,转发请注明来源!