如何提取组内的前若干或末若干名?这个要求不太好办的。
一般提到分组就首先会想到数据透视表,但是透视表对于值无法不聚合,所以换个思路,用函数,朴素的函数。
案例:统计出下图 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,从而返回第二大的值