在使用MIN时如何排除0与IF?

我有一个工作簿2工作表, Sheet1Sheet2

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

 AB A100 A200 B150 C3AB 

Sheet2有一堆产品代码和成本:

 AB 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。

尝试在B1中将其作为数组公式提交

未经testing

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

我认为这将工作

如果在表1中添加C列并填写它,它会更快吗?

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

那么你的原始公式input为matrix将工作引用列C,而不是:

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

任何人都可以评论添加另一列的速度? 这听起来像表有高达20000行。

arrays公式:

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

Shift-Ctrl-在公式窗口中input要插入的内容,曲线括号由Excel插入,而不是由用户插入。

MIN行为奇怪,发出0也为数组中的非数字值。 SMALL被用来代替#NUM! 错误的不存在的引用。

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

AFAIK:使用VBA循环访问值,或者:

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

HTH