在Microsoft Excel中,选择每个组的最大值及其关联值

时间:2017-04-21 01:53:00

标签: excel vba excel-vba excel-formula

我有一个像这样格式化的大表:

+-----+-------+-------+
| id  | count | group |
+-----+-------+-------+
| 123 | 37    | a     |
+-----+-------+-------+
| 121 | 26    | a     |
+-----+-------+-------+
| 442 | 33    | a     |
+-----+-------+-------+
| 923 | 55    | b     |
+-----+-------+-------+
| 783 | 12    | b     |
+-----+-------+-------+  

我的目标输出将选择最大计数以及与每个组的最大计数相关联的id。是否有可以执行此操作的数组函数?这个数组函数给我最大数量,但它并不总是不同,所以我不确定如何获取id:

{=MAX(IF(C:C=C1,B:B))}  

因此,这将检查第3(C)列中的组并返回第2(B)列中的最大计数,但我如何获取第一列(A)?

1 个答案:

答案 0 :(得分:2)

也许这就是你想要的。在下面的例子中

F2:  =MAXIFS(count,group,E2)
G2: =INDEX($A:$A,MAX((group=E2)*(count=F2)*ROW(id)))

并且G2中的公式是一个数组公式,必须通过按住 ctrl + shift 确认,同时按 Enter

当然,如果您的Excel版本中没有MAXIFS,并且您不想使用 ctrl + shift < / kbd> + 输入序列,您可以改用这些公式:

F2: =AGGREGATE(14,4,(group=E2)*count,1)
G2: =INDEX($A:$A,AGGREGATE(14,4,(count=F2)*(group=E2)*ROW(id),1))

enter image description here