我有一个包含2个工作表的工作簿,Sheet1
和Sheet2
。
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。
答案 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))
有人可以评论添加另一列的速度吗?听起来这张纸最多可达20000行。
答案 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