Excel使用MIN+IF组合数组公式返回0或#N/A错误的问题咨询
方案1:使用Excel自带的条件最小值函数(推荐,适用于Excel 2019及以上/365版本)
直接使用MINIFS函数,无需按数组回车,公式写法:
=MINIFS(A1:A5,B1:B5,"<"&C1)
如果你的Excel使用分号作为公式参数分隔符,调整为:
=MINIFS(A1:A5;B1:B5;"<"&C1)
这个函数会直接筛选B列小于C1的行,返回对应A列的最小值,自动忽略不符合条件的行,不会返回0。
方案2:数组公式方案(适用于2019以下旧版本Excel)
你之前的公式错误在于多余的乘法运算引入了0值,直接在IF判断中返回符合条件的A列值即可,不符合条件的返回NA(),MIN会自动忽略错误值:
按下CTRL+SHIFT+ENTER输入数组公式:
{=MIN(IF(B1:B5<C1,A1:A5,NA()))}
分隔符为分号的版本:
{=MIN(IF(B1:B5<C1;A1:A5;NA()))}
如果不想在无符合条件的行时出现错误值,可以嵌套IFERROR处理:
{=IFERROR(MIN(IF(B1:B5<C1,A1:A5,NA())),"无符合条件的值")}
方案3:SMALL函数实现
如果偏好使用SMALL函数,写法如下,同样需要按CTRL+SHIFT+ENTER输入:
{=SMALL(IF(B1:B5<C1,A1:A5,""),1)}
SMALL会自动忽略文本值,返回符合条件的数值中第1小的结果,也就是最小值。
原公式问题说明
你之前使用的{=MIN(IF(B1:B5<C1;1;0)*A1:A5)}中,不符合条件的项会被计算为0*A列值=0,MIN会优先取到0值;而同逻辑的MAX公式不受影响,是因为0小于符合条件的正数,不会干扰最大值计算,这套逻辑本身就不适用于MIN场景。
用你给出的示例数据验证,以上方案都会返回正确结果13,对应B列小于200的行中A列的最小值。
内容的提问来源于stack exchange,提问作者LBOULET
相关产品推荐
相关产品推荐

