使用MIN和IF时如何排除0?

时间:2013-01-25 18:15:06

标签: excel excel-formula

我有一个包含2个工作表的工作簿,Sheet1Sheet2

Sheet1有一个要查找的值(产品代码),还有一个要填充的空单元格:

A      B
A100
A200
B150
C3AB

Sheet2有很多产品代码和费用:

A      B
A100   35
A100   14
A100    0
A200   10
A200   12
etc, etc, etc

我在Sheet1 B1中使用以下公式来查找Sheet2中的MIN匹配值:

=MIN(IF(Sheet2!$A$1:$A$5=A1,Sheet2!$B$1:$B$5))

如何排除返回0的匹配?在产品A100的情况下,我希望返回最低的非零匹配,即14。

4 个答案:

答案 0 :(得分:2)

尝试在B1

中将其作为数组公式提交

未测试

=MIN(IF(((Sheet2!$A$1:$A$5=A1)*(Sheet2!$B$1:$B$5>0))>0,Sheet2!$B$1:$B$5))

我认为这会起作用

答案 1 :(得分:2)

如果在Sheet 1上添加C列并用以下内容填充它,会更快吗?

=IF(B1=0," ",B1)

然后您输入的原始公式作为矩阵将改为引用C列:

=MIN(IF(Sheet2!$A$1:$A$5=A1,Sheet2!$C$1:$C$5))

有人可以评论添加另一列的速度吗?听起来这张纸最多可达200​​00行。

答案 2 :(得分:1)

数组公式:

{=SMALL(IF(Sheet2!$B$1:$B$5<>0;IF(A3=Sheet2!$A$1:$A$5;Sheet2!$B$1:$B$5;"");"");1)}

Shift-Ctrl-Enter在公式窗口中输入,曲线括号由Excel插入,而不是由用户插入。

MIN表现得很奇怪,也为数组中的非数字值发出0。而是使用了SMALL,对于不存在的引用给出了#NUM!错误。

示例电子表格:http://www.bumpclub.ee/~jyri_r/Excel/MInimal_value_excluding_0.xls

答案 3 :(得分:0)

AFAIK:使用VBA循环遍历值,或者:

使用类似于=IF(a1=0,"",A1)的公式创建另一列(向下复制列A中的每个值)。然后你可以在这个列上使用min函数。

HTH