基于分组与最大值的多列排序问题求助
按分组提取对应最大值的A列数据解决方案
你这需求我经常碰到,不用手动排序完全能搞定,给你两个适配不同Excel版本的实用方法:
方法1:XLOOKUP + MAXIFS(Excel 365/2021及以上版本适用)
这个组合最省心,直接一步到位。假设你的数据在A:C列,想在D列显示每行所属分组的目标A值,就在D2单元格输入:
=XLOOKUP(MAXIFS(C:C, B:B, B2), C:C, A:A, "", 0)
下拉填充就行。
MAXIFS(C:C, B:B, B2):先算出当前行B列分组对应的C列最大值XLOOKUP:根据这个最大值,在C列找到匹配项,返回对应的A列内容
要是只想提取每个唯一分组的结果,先在E列用=UNIQUE(B:B)得到所有不重复的分组,然后在F2输入:
=XLOOKUP(MAXIFS(C:C, B:B, E2), C:C, A:A, "", 0)
下拉就能拿到每个分组对应的目标A值。
方法2:INDEX + MATCH组合(全Excel版本兼容)
如果你的Excel版本比较旧,不支持XLOOKUP,用经典的INDEX+MATCH组合也能解决。同样在D2输入:
=INDEX(A:A, MATCH(MAXIFS(C:C, B:B, B2), C:C, 0))
下拉填充即可。
- 原理和上面类似:先用
MAXIFS找到当前分组的C列最大值,再用MATCH定位这个值在C列的位置,最后用INDEX返回A列对应位置的内容
特殊情况处理
如果同一分组里C列有多个相同的最大值,上面的公式会返回第一个出现的A列值。要是需要返回最后一个出现的,用这个数组公式(Excel 365直接回车,旧版按Ctrl+Shift+Enter触发计算):
=INDEX(A:A, MAX(IF((B:B=B2)*(C:C=MAXIFS(C:C,B:B,B2)),ROW(C:C))))
内容的提问来源于stack exchange,提问作者Fda
相关产品推荐
相关产品推荐

