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

Excel学习世界 2023-12-27 21:03:18

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

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

案例:

统计出下图 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,从而返回第二大的值

4 阅读:235

Excel学习世界

简介:Excel 学习交流