3

我有一个包含 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。

4

4 回答 4

2

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

未经测试

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

我认为这会奏效

于 2013-01-25T18:38:53.763 回答
2

如果您在工作表 1 上添加 C 列并填写以下内容,会不会更快:

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

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

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

任何人都可以评论添加另一列的速度吗?听起来这张表最多有 ~20000 行。

于 2013-01-25T23:54:35.453 回答
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 插入,而不是由用户插入。

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

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

于 2013-01-25T18:38:55.357 回答
0

AFAIK:要么使用 VBA 循环遍历这些值,要么:

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

高温高压

于 2013-01-25T18:24:01.283 回答