Excel MaxIF与Vlookup组合公式需求:按列匹配最大值对应值
嘿,刚好碰到过类似的需求,给你整理两种适配不同Excel版本的解决方案,直接套用就行:
方案1:Excel 365/2021及以上(支持动态数组)
如果你的Excel版本支持动态数组函数,操作会更简洁:
- 先提取Column1的所有唯一值(假设数据在A:C列,把结果放在D列):
=UNIQUE(A:A) - 接着在E列对应位置输入公式,自动匹配每个唯一值对应的目标Column2值:
要是用动态数组溢出的话,甚至可以把两个步骤合并成一个公式:=XLOOKUP(MAXIFS(C:C, A:A, D2), C:C, B:C, "", 0, 1)
公式说明:=LET( unique_ids, UNIQUE(A:A), max_vals, MAXIFS(C:C, A:A, unique_ids), XLOOKUP(max_vals, C:C, B:C, "", 0, 1) )UNIQUE(A:A):快速提取Column1里的不重复分组值MAXIFS(C:C, A:A, unique_ids):针对每个分组,找出Column3的最大值XLOOKUP:根据最大值反向匹配对应的Column2内容,最后一个参数1表示返回第一个匹配到最大值的Column2值,改成-1就能返回最后一个匹配值
方案2:旧版Excel(不支持动态数组)
如果是Excel 2019及更早版本,用经典的INDEX+MATCH组合:
假设你要在D2单元格输入公式,下拉填充到所有行:
=INDEX(B:B, MATCH(MAXIFS(C:C, A:A, A2), C:C, 0))
要是需要返回同一最大值对应的最后一个Column2值,换成LOOKUP公式更稳妥:
=LOOKUP(2, 1/(C:C=MAXIFS(C:C, A:A, A2)), B:B)
公式说明:
MAXIFS(C:C, A:A, A2):定位当前行Column1对应的Column3最大值MATCH/LOOKUP:找到该最大值在Column3中的位置,再返回Column2对应内容
注意事项
- 建议把公式里的整列范围(比如
A:A)改成实际数据的范围(比如A2:C100),这样公式运行更高效 - 如果分组里没有对应数据(比如Column1有空白值),可以给公式加个错误处理,比如把
""换成IFERROR(..., "无数据")
内容的提问来源于stack exchange,提问作者GreZilVat
相关产品推荐
相关产品推荐

