如何获得一个范围的MIN,以及同一行中的第二个单元格?

时间:2013-01-28 17:10:18

标签: excel excel-formula

感谢stackoverflow的Excel大师,帮助我完成一个看似不可能的项目。我有另一个问题:

我有2个工作表,Sheet1和Sheet2。

Sheet1包含A中的产品代码列表以及Sheet2B的最低价格公式:

A      B      C
A100   $10
A200   $12
A300   $45

Sheet2有一个产品代码,价格和说明列表:

A      B      C
A100   $20    Product One
A100   $10    Product Two
A100   $12    Product Three
A100   $0     Not Found
A200   $25    Product A
A200   $12    Product B
etc, etc, etc

Sheet1,列B中,我使用以下公式查找最低的非零价格:

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

如何修改此内容以获取C列中的说明并将其放入Sheet1C

一如既往,感谢您的时间和精力!

3 个答案:

答案 0 :(得分:1)

我想我得到了答案)将以下内容放在C1中:

=IFERROR(INDIRECT("Sheet2!C"&MATCH(A1&MIN(IF(Sheet2!$A$1:$A$20000=A1,IF(Sheet2!$B$1:$B$20000>0,Sheet2!$B$1:$B$20000))),Sheet2!$A$1:$A$20000&Sheet2!$B$1:$B$20000,0)),"No price / description found")

并且不要忘记按 CTRL + SHIFT + ENTER 而不是通常的 ENTER - 这将定义ARRAY公式并在其周围生成{}括号(但不要手动输入!)。还包括错误处理。

如果需要组合价格和描述的单细胞解决方案 - 使用此怪物:

=IFERROR("$"&MIN(IF(Sheet2!$A$1:$A$20000=A1,IF(Sheet2!$B$1:$B$20000>0,Sheet2!$B$1:$B$20000)))&": "&INDIRECT("Sheet2!C"&MATCH(A1&MIN(IF(Sheet2!$A$1:$A$20000=A1,IF(Sheet2!$B$1:$B$20000>0,Sheet2!$B$1:$B$20000))),Sheet2!$A$1:$A$20000&Sheet2!$B$1:$B$20000,0)),"No price / description found")

示例文件也可用:https://www.dropbox.com/s/tnb3ov7o1s2sper/PriceWithDescr.xlsx

答案 1 :(得分:1)

您可以使用INDEX/MATCH解决方案,例如对于C1

=INDEX(Sheet2!C$1:C$20000,MATCH(1,(Sheet2!A$1:A$20000=A1)*(Sheet2!B$1:B$20000=B1),0))

CTRL+SHIFT+ENTER确认

答案 2 :(得分:0)

由于Sheet2中的产品代码和价格列可能都有重复值,因此我建议您在Sheet2中创建一个唯一值,以便区分不同的价格/产品代码组合。以下是我解决这个问题的方法:

步骤1 - 在Sheet2中插入新列

我在当前列A之前添加了一个新列,其中包含以下公式:

=CONCATENATE(B2,"-",C2)

此版本现在将为Sheet2产生以下值:

A          B          C          D
A100-20    A100       20         Product One   
A100-10    A100       10         Product Two
A100-12    A100       12         Product Three
A100-0     A100       0          Not Found

步骤2 - 在Sheet2的C列中输入新公式

=VLOOKUP(CONCATENATE(A2,"-",B2),Sheet2!A:D,4,FALSE)

这将从Sheet2中的数据中查找Sheet1中A列和B列中的值组合。可以添加额外的错误检查以忽略零价产品,但我没有将其包括在我的公式中,因为您在Sheet1列B的先前公式中已经考虑到这一点。当我测试它时,这产生了正确的描述。 / p>

如果您无法在此范围内修改工作表,您还可以使用基于VBA的迭代解决方案,我很乐意在必要时进行演示。

祝你好运!