Excel中如何按指定类别查找匹配对应数值的最小值
你遇到的问题本质是函数选型不匹配:VLOOKUP的核心逻辑是定位查找值的首个匹配项返回对应结果,本身没有分组筛选计算极值的能力,如果公式里嵌套全局MIN计算,自然只会返回全局最小值的单次匹配结果,无法按类别分别输出结果。
你的原始数据结构如下:
Column A Column B apples 1.2 apples 1 bananas 2 oranges 2.3 oranges 2.1 oranges 2.4
可以根据你使用的Excel版本,选择以下任意一种方法实现需求:
方法1:MINIFS函数(推荐,适用于Excel 2019/365/2021及以上版本)
这是专门为多条件求最小值设计的函数,写法最简单,计算效率最高。
假设原始数据存放在Sheet1工作表:A列为类别列,B列为数值列;你当前整理了独立类别的工作表中,待匹配的类别从D2单元格开始依次排列(D2=apples、D3=bananas、D4=oranges),在结果列E2单元格输入以下公式,下拉填充到所有类别行即可:
=MINIFS(Sheet1!B:B, Sheet1!A:A, D2)
公式逻辑:第一个参数指定要计算最小值的数值区域,第二个参数指定要做条件匹配的类别区域,第三个参数指定当前行要匹配的类别值,函数会自动筛选出所有符合类别的数值,计算其中的最小值。针对示例数据,会返回apples对应1、bananas对应2、oranges对应2.1的正确结果。
如果数据量较大,建议把整列引用改成实际数据范围,比如Sheet1!A2:A7、Sheet1!B2:B7,可以提升计算速度。
方法2:MIN+IF组合数组公式(兼容所有旧版Excel)
如果你使用的是2019以前的老版本Excel,没有内置MINIFS函数,可以用数组公式实现相同效果。
单元格引用规则和上述一致,在E2单元格输入以下公式:
- 如果你用的是Excel 365/2021及以上版本,直接按回车确认,下拉填充即可
- 如果你用的是2019及更早的老版本,输入完公式需要按
Ctrl+Shift+Enter三键组合确认数组公式,再下拉填充
=MIN(IF(Sheet1!A:A=D2, Sheet1!B:B))
公式逻辑:先通过IF判断逐行匹配类别,把不符合当前类别的行排除,只保留同类别对应的数值,再用MIN函数计算这部分有效数值的最小值。
内容的提问来源于stack exchange,提问作者Salma Dodin

